1. 程式人生 > >python 檔案的讀,寫

python 檔案的讀,寫

檔案的引數

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