python可以使用open函式來實現檔案的開啟,關閉,讀寫操作;
python3中的open函式定義為:
open(file, mode='其中mode列表為:r', buffering=none, encoding=none, errors=none, newline=none, closefd=true)
'r'這裡我們主要關心一下'r', 'w', 'a', 'r+', 'w+', 'a+', 'x',很多人容易混淆不同模式的讀寫操作#open for reading (default)'w
'#open for writing, truncating the file first'x
'#create a new file and open it for writing,python3新增'a
'#'b
'#binary mode't
'#text mode (default),python3新增'+
'#open a disk file for updating (reading and writing)'u
'#universal newline mode (deprecated)
1)'r'
唯讀模式,open函式中mode引數的預設模式,檔案不存在的話,報filenotfounderror(python2是ioerror);
檔案開啟後,初始游標位置為0;
每次讀都是從游標位置開始讀;
如果進行了寫操作,會報如下異常:
io.unsupportedoperation: not writable2)'w'
只寫模式,檔案不存在的話,建立檔案;檔案存在的話,首先清空檔案,然後開始寫;
檔案開啟後,初始游標位置為0;
每次寫都是從游標位置開始寫;
如果進行了讀操作,首先檔案也會被清空,會報如下異常:
io.unsupportedoperation: not readable3)『a』
追加模式,檔案不存在話,建立檔案;檔案存在的話,不會清空檔案;
檔案開啟後,初始游標位置為檔案結尾;
每次寫都是從結尾開始寫;
如果進行了讀操作,同時報如下異常:
io.unsupportedoperation: not readable上面的比較好理解,下面就有點繞了
4)'r+'
讀寫模式,檔案不存在的話,報filenotfounderror(python2是ioerror);
檔案開啟後,初始游標位置為0;
每次讀寫都是從游標位置開始;但是對於寫操作,類似於替換操作;
看如下**:
檔案內容為:
abcdefg**內容為:
f = open('執行**後,檔案內容變為:open_mode.txt
', 'r+'
)f.write(
'xyz')
f.close()
xyzdefg5)'w+'
只寫模式,檔案不存在的話,建立檔案;檔案存在的話,首先清空檔案;
檔案開啟後,初始游標位置為0;
每次讀寫都是從游標位置開始;寫操作,類似於替換操作;
6)『a+』
追加模式,檔案不存在話,建立檔案;檔案存在的話,不會清空檔案;
檔案開啟後,初始游標位置為檔案結尾;
每次寫都是從結尾開始寫;
讀操作從游標位置開始;
7) 'x'
python3新加
建立檔案並寫操作,操作必須是不存在的檔案,如果操作的檔案已存在,則報錯fileexistserror
不可讀,如果進行了讀操作,同時報如下異常:
io.unsupportedoperation: not readable最後畫一張**總結一下:
二進位制形式讀寫檔案;
寫資料時,寫入的資料型別必須為字串型別,其他型別必須通過json(就是符合json格式的字串)寫入
python2與python3對於'b』 mode的行為不同,這和python2與python3的字串型別有關;事實上,python的字串型別有兩種;
python2的兩種字串型別,分別叫做str和unicode,str例項包含原始的8位值;而unicode的例項,則包含unicode字元。
python2的兩種字串型別,分別叫做byte和str,與python2不同的是,byte例項包含原始的8位值;而str的例項,則包含unicode字元。
當讀寫檔案採用'b'的模式時,要求必須以二進位制形式讀寫,在python2中,字串必須為str字串,python3中必須為byte字串;所以在python3,'b'模式下這樣讀寫字串
s = b'view codehello world!'#
注意是byte字串
f = open('
open_mode.txt
','wb')
f.write(s)
或:
s = 'view codehello world!
'f = open('
open_mode.txt
','wb')
f.write(s.encode(encoding='
utf-8
'))
不然會報如下錯誤:
traceback (most recent call last):view codefile
"c:/users/desktop/python/cnblogs/資料型別.py
", line 125, in
f.write(s)
typeerror: a bytes-like object is required, not
'str
'
open的內容還有很多,針對於讀,還有個更好的模組linecache用於讀取大檔案;以後有時間繼續擴充套件
檔案操作 mode
fopen和freopen的第二個引數檔案開啟方式 mode r 唯讀 為輸入開啟乙個文字檔案 w 只寫 為輸出開啟乙個文字檔案 a 追加 向檔案檔案尾新增資料 rb 唯讀 為輸入開啟乙個二進位制檔案 wb 只寫 為輸出開啟乙個二進位制檔案 r 讀寫 為讀寫開啟乙個文字檔案 w 讀寫 為讀寫建立乙個...
open檔案操作
基本方式 r 唯讀不寫 w 只寫模式,檔案不存在則建立,檔案存在則清空 x 只寫模式,不可讀,檔案不存在可以建立,檔案存在直接報錯。a 追加 不可讀,不存在則建立,存在可在尾部追加 假如 檔名是 db 內容 123456f open db r r 唯讀 date f.read read表示把檔案內容...
open檔案操作
open 做檔案操作的就是他 1.開啟檔案 f open db r 唯讀 f open db w 只寫 它清空檔案再寫 f open db x python3新加的,這個如果檔案存在報錯,不存在可以讓你建立並寫內容。f open db a a是追加 號表示同時讀寫乙個檔案 r 可讀寫 w 可讀寫 x...