python 檔案的讀,寫
阿新 • • 發佈:2018-11-10
檔案的引數
open(file[,mode][,encoding][,errors])
四個引數(前兩個是必選引數,後兩個是可選引數):
file 檔案的路徑,絕對路徑,相對路徑均可
mode 檔案開啟模式
encoding 編碼, 編碼使用utf-8,或者 gbk,預設編碼是 gbk
errors 錯誤處理, ignore 忽略
讀:
read | 方法 |
---|---|
r | (read)以只讀字元的方式開啟檔案, 如果檔案不存在,則會出現異常;反之,則直接開啟,檔案定位符放在起始位置 |
rb | (read byte) 以只讀二進位制的方式開啟檔案,如果檔案不存在,則會出現異常 |
r+ | (read byte) 以讀寫的形式開啟檔案,如果檔案不存在,則會出現異常, |
rb + | (read byte) 以讀寫二進位制的方式開啟檔案,如果檔案不存在,則會出現異常 |
rf = open("文件.txt",mode="r",encoding="utf-8",errors="ignore")
注意:檔案不存在,則報異常:FileNotFoundError
with open("文件.txt",mode="r",encoding="utf-8",errors="ignore") as f: f.read() # 一次讀取全部內容 f.read(3) #read設定了引數, 引數表示讀取多少個字元,空格算字元,漢字算一個字元 f.read(5) #如果繼續讀,是接著上次讀取到的地方繼續讀 rf.read(1024*1024) #大檔案讀取,1024K = 1M,1024*1M = 1G, #seek用來跳到某個位置 # 引數1:offset 偏移量 正數n表示位置相對於參考位置向後移動n個位置, 負數表示向前移動 # 注意:位置的值不能是負數 # 引數2: shence 0表示相對於起始位置 1表示相對於當前位置,2相對於檔案的末尾 f.seek(6,1) #相對於當前位置,向後移動6個位置 f.readline() #讀取一行 f.readlines() #按行全部讀取 ,結果是包含了多行資料的列表
with語法:with可以自動的幫我們釋放資源,關閉連線,即在此處不需要執行close
rf = open("文件.txt",mode="rb") content = rf.read() # 字串前加上 b, 表示該資料是二進位制資料 # 將二進位制資料解碼decode content = content.decode(encoding="UTF-8") # 以二進位制讀取資料時,read中的引數,表示帶去多少個位元組 # 在utf-8中,英文字母 佔據一個位元組 , 漢字佔據3個位元組, gbk中漢字佔據2個位元組 # content = rf.read(11) rf.close()
注意:使用二進位制時,不能設定編碼;讀寫完畢之後,都要關閉連線
寫
write | 方法 |
---|---|
w | 以只寫字元的方式開啟檔案, 如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,並擦除掉原檔案內容,檔案定位符放在檔案的開始位置,再寫時從檔案定位符開始寫 |
wb | 以只寫二進位制的形式開啟檔案,如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,並擦除掉原檔案內容,檔案定位符放在檔案的開始位置,再寫時從檔案定位符開始寫 |
w+ | 以讀寫的形式開啟檔案,如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,並擦除掉原檔案內容,檔案定位符放在檔案的開始位置,再寫時從檔案定位符開始寫 |
wb+ | 以讀寫二進位制的形式開啟檔案,如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,並擦除掉原檔案內容,檔案定位符放在檔案的開始位置,再寫時從檔案定位符開始寫 |
with open("文件.txt",mode="w",encoding="utf-8",errors="ignore") as f:
f.write() #一次寫入
f.writelines() #按行寫入,適用於csv檔案製表
f.flush() # 直接把內部緩衝區的資料立刻寫入檔案,而不是被動的等待自動重新整理緩衝區寫入
追加
append | 方法 |
---|---|
a | 以追加字元的形式開啟檔案, 如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,不會擦除原始檔內容,檔案定位符放在末尾,從末尾開始寫 |
ab | 以追加二進位制的形式開啟檔案, 如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,不會擦除原始檔內容,檔案定位符放在末尾,從末尾開始寫 |
a+ | 以讀寫的形式開啟檔案, 如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,不會擦除原始檔內容,檔案定位符放在末尾,從末尾開始寫 |
ab+ | 以讀寫二進位制的形式開啟檔案, 如果檔案不存在,則會建立新的檔案,然後可以向新的檔案中新增資料,如果檔案存在,則開啟該檔案,不會擦除原始檔內容,檔案定位符放在末尾,從末尾開始寫 |
使用方法參考write