1. 程式人生 > 實用技巧 >第十一天 第十章 檔案操作

第十一天 第十章 檔案操作

# 想要操作檔案,首先要建立或者開啟指定的檔案並建立檔案物件:file = opend(filename[,mode[,buffering]])
#   file:被建立的檔案物件
#   filename:要建立或開啟檔案的檔名
#   mode:可選引數,用於指定檔案的開啟模式,預設是隻讀‘r’
# r:只讀,檔案指標在檔案開頭
# rb:二進位制模式開啟檔案,並採用只讀模式,一般用於圖片、聲音等
# r+:可以讀,也可以寫(覆蓋原內容)
# rb+:二進位制的讀寫模式
# w:只寫模式開啟檔案
# wb:二進位制格式開啟檔案,只寫模式,一般用於圖片、聲音等
# w+:開啟檔案後,先清空檔案內容,然後再讀寫
# wb+:二進位制模式開啟檔案,採用讀寫模式 # a:以追加模式開啟檔案,檔案指標在檔案的末尾,否則建立新檔案用於寫入 # ab:二進位制追加模式 # a+:以讀寫模式開啟檔案,檔案指標在檔案末尾 # ab+:二進位制讀寫模式開啟檔案,指標在檔案末尾 # buffering:可選引數,指定讀寫檔案的緩衝模式,0為不快取;1為快取;如果大於1則表示快取區的大小;預設為快取模式。 # 開啟一個不存在的檔案需要用w/w+/a/a+這些開啟模式,否則會報錯 print('='*10,'螞蟻莊園','='*10) file = open('message.txt','r') print('即將顯示...
') # 以二進位制形式開啟檔案 file = open('demo.jpg','rb') print(file) # <_io.BufferedReader name='demo.jpg'> # BufferedReader物件產生後,可以用其它第三方模組進行處理 # 開啟檔案時指定編碼方式:open()函式預設以GBK編碼,如果開啟其它編碼的檔案,將會丟擲異常。 file = open('message.txt','r',encoding='utf-8') file.close() # 沒使用with方法時,必須用此命令將寫入的內容儲存到文字檔案並關閉檔案 # 關閉檔案:file.close()
# close()方法先重新整理緩衝區中的還沒有寫入的資訊,然後再關閉檔案,這樣可以將沒有寫入到檔案的內容寫入到檔案中。 # 如果想寫入檔案,但不想立刻關閉檔案,可以用flush()方法將內容寫入文字內容 # 開啟檔案時使用with語句:這是為了解決忘記關閉檔案或檔案關閉異常的情況而設計的 with open('message.txt','a+') as file: file.write('hello world') file.write('good') # file = open('aa.txt','w') # file.writelines('hello world\n') # file.writelines('hello world\n') # file.close() # 讀取檔案 # 讀取指定字元:file.read([size]) # file:開啟的檔案物件 # size:指定要讀取的字元個數,如果省略則讀取所有內容 file = open('aa.txt','r') print(file.read(8)) # 讀取從檔案指標往後數8個字元個數 print(file.seek(2)) # 設定檔案指標位置,seek(a,b) a是移動的字元個數,b引數有3個值,預設是0,0表示從開頭計算,1表示從當前位置計算,2表示從檔案尾計算 print(file.read(8)) # 讀取從檔案指標往後數8個字元個數 file.close() # seek()和read()的不同:seek不管你是GBK還是UTF8,英文和數字都是按一個字元計算 # 讀取一行 with open('aa.txt','r') as file: while True: line = file.readline() print(line,end='') if line == '': break # 如果檔案很大,read()會一次性讀取全部內容,容易造成記憶體不足 # 讀取全部行:readlines()讀取全部行,返回一個列表,每一行是列表的一個元素 file.readlines() # 如果檔案很大,讀取時會很慢