目錄
1:獲取open函式及返回例項的幫助文件
2:open函式的定義及引數說明
2.1:open函式定義及返回值:
2.2:引數說明
2.3:引數組合
2.4:示例
3:檔案物件常用方法
4:with open 語法
python3中對檔案的讀寫操作使用open函式來完成。
print(help(open))
for item in dir(open('t.txt','w')):
print(item)
open(file, mode='r', buffering=-1, encoding=none, errors=none, newline=none, closefd=true, opener=none);
其返回值是乙個可迭代物件;
引數引數值
說明mode
'r'open for reading (default);
唯讀模式,如果檔案不存在,返回異常filenotfounderror。返回的檔案位置在開頭
'w'open for writing, truncating the file first;
覆蓋寫模式,檔案不存在就建立,檔案存在就清空原檔案;
'x'create a new file and open it for writing;
建立寫模式,檔案不存在就建立,檔案存在就返回異常fileexistserror
'a'追加寫模式,檔案不存在就建立,檔案存在就在檔案最後追加內容。返回的檔案位置在結尾。
'b'binary mode
二進位制檔案模式
't'text mode (default)
文字檔案模式,預設值
'+'open a disk file for updating (reading and writing)
與r/w/x/a一起使用,在原功能基礎上增加同時讀寫功能。
'u'universal newline mode (deprecated)
encoding
表示儲存檔案的編碼;
當讀的時候,使用此編碼把磁碟檔案中的內容解碼之後,寫入記憶體中;
當寫的時候,使用此編碼把記憶體中的內容編碼之後,寫入磁碟檔案中;
如果為空其預設值為下面語句的輸出:
import locale
print(locale.getpreferredencoding(false))
't' (預設為t)
'b''+'
'r'rt 或(r)
rbr+ :在滿足r的基礎上(檔案要存在),增加寫的功能,在檔案的開頭寫
rb+:讀寫的是二進位制檔案;
'w'w
wbw+:首先滿足w(不存在建立,存在清空),再增加讀的功能
wb+:
'x'x
xbx+:滿足x(不存在建立,存在異常),增加讀功能
xb+:
'a'a
aba+:a的基礎之上增加讀的功能
ab+:
# encoding=gbk
#1: r:讀檔案,檔案不存在丟擲filenotfounderror異常
f = open('test.txt','r') # 游標在第一行
print(f.readline()) # 游標下移一行
print(f.read()) # 讀取剩下的
print(f.read()) # 再讀就為空
print(f.read()) # 再讀就為空
print('*'*60)
f.seek(0) # 游標定位到0,可重新讀
print(f.read())
f.close()
print('--1--','*'*60)
#2: r+:可讀寫;首先讀檔案,檔案不存在丟擲filenotfounderror異常;
# 讀之前寫,會覆蓋
f = open('test.txt','r+')
f.write('1234') # 直接寫會覆蓋 游標為0開始的4個字元
print(f.read()) # 從游標處開始讀(此處為3)
f.close()
#讀之後寫, 寫到檔案末尾
f = open('test.txt','r+')
print(f.read(1)) # 在寫之前進行讀操作,後面的寫操作會在檔案的末尾
f.write('1234') # 寫在檔案的末尾,游標在檔案末尾
print('[',f.read(),']') # 這裡的讀為空
# f.seek(0)
# print('[',f.read(),']')
f.close()
print('--2--','*'*60)
# 3:w: 檔案不存在就建立,檔案存在就清空
f = open('test.txt','w')
f.write('1233455')
f.close()
print('--3--','*'*60)
# 4:w+: 可讀寫,,檔案不存在就建立,檔案存在就清空;
f = open('test.txt','w+')
f.write('1233455') # 游標在檔案末尾
print(f.read()) # 游標在檔案末尾,讀的內容為空
f.seek(0) # 游標在檔案開頭
print('[',f.read(),']') # 游標在檔案末尾
f.write('888') # 在檔案末尾寫
f.seek(0) # 游標在檔案開頭
f.write('999') # 從游標處覆蓋
f.close()
print('--4--','*'*60)
# 5:a:檔案不存在就建立,檔案存在就在末尾寫
f = open('test.txt','a') # 游標在檔案末尾
f.write('1233455')
f.close()
print('--5--','*'*60)
# 6:a+:可讀寫,檔案不存在就建立,存在就在檔案末尾寫
f = open('test.txt','a+') # 游標在檔案末尾
print(f.read()) # 游標在檔案末尾,讀的結果為空。
f.write('123345599') # 在檔案末尾寫
f.seek(0) # 游標在檔案開頭
print(f.read())
f.seek(0) # 游標在檔案開頭
f.write('8888888') # 在檔案末尾寫,與游標沒關係
f.close()
# 二進位制模式 b,與上面的文字模式是一樣的操作,
函式名稱
說明read(size=-1, /)
讀字元個數,省略或者為負時讀到檔案結尾
readline(size=-1, /)
讀一行,size省略或者為負時讀到檔案結尾;size小於一行的字元個數時,返回size個字元
readlines(hint=-1, /)
讀所有的行,hint省略或者為負時讀到所有的行,hint為正數時表示讀取總的字元個數。
seek(offset[,whence])
將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence引數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。
write(str)
把str寫到檔案中,write()並不會在str後加上乙個換行符
writelines(seq)
把seq的內容全部寫到檔案中(多行一次性寫入)。這個函式也只是忠實地寫入,不會在每行後面加上任何東西。
truncate([size])
把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位置。如果size比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些隨機的內容加上去。
close()
關閉檔案。python會在乙個檔案不用後自動關閉檔案,不過這一功能沒***,最好還是養成自己關閉的習慣。 如果乙個檔案在關閉後還對其進行操作會產生valueerror
flush()
把緩衝區的內容寫入硬碟
在open開啟檔案之後,在處理完檔案時,需要呼叫close對檔案進行關閉。open開啟檔案返回的檔案物件,是可迭代物件,同時
它也支援上下文管理協議(即物件有__enter__()和__exit__()這兩個方法),因此可以使用with 語句來操作,它隱式地呼叫close方法。
例子:
# encoding=gbk
# 1:讀取所有行;不需要呼叫f.close()
with open('test.txt','r') as f:
print(f.read())
# 2:一行一行讀
with open('test.txt','r') as f:
for item in f:
print(item) # item 中有換行符,item[:-1] 可去掉最後乙個字元
Python3 檔案操作
open函式的第乙個引數是要開啟的檔名 檔名區分大小寫 read函式可以一次性讀入並返回檔案的所有內容。close函式負責關閉檔案 注意 如果忘記關閉檔案,會造成系統資源消耗,而且會影響到後續對檔案的操作。方法執行後,會把檔案指標移動到檔案的末尾。示例 開啟要讀取的檔案 file open test...
python3 檔案操作
對檔案操作流程 1 開啟檔案,得到檔案控制代碼並賦值給乙個變數。2 通過控制代碼對檔案進行操作 3 關閉檔案 基本操作 f open lyrics 開啟檔案 first line f.readline print first line first line 讀第一行 print 我是分割線 cent...
Python3 檔案操作詳解
檔案操作的步驟 開啟檔案 操作檔案 關閉檔案 切記 最後要關閉檔案 否則可能會有意想不到的結果 檔案控制代碼 open 檔案路徑 模式 指定檔案編碼 檔案控制代碼 open 檔案路徑 模式 encoding utf 8 為了防止忘記關閉檔案,可以使用上下文管理器來開啟檔案 with open 檔案路...