Python自學之路-python檔案操作
阿新 • • 發佈:2020-07-15
二、open函式和open with
Ⅰ、open
格式:open("路徑","開啟方式")
開啟方式:'r'只讀模式, ‘w’寫模式,
‘a’追加模式 ,‘b’二進位制模式,‘+’讀/寫模式。
例子1:向檔案寫入“hello world!!!”,檔案不存在就建立
fh=open("d:/file1.txt","w") words1="hello world!!!" fh.write(words1) fh.close()
例子2:讀取d盤file1.txt檔案的內容
fh2=open("d:/file2.txt","r") data2=fh2.read() print(data2)
>>輸出 hello world!!!
例子3:統計檔案中一行存在test的行數
count=0 fp=open("e:\\file.txt","r",encoding="utf-8") lines=fp.readlines() for i in lines: if "test" in i: print(i) count+=1 print(count)
Ⅱ、with open as
open讀寫時,每次讀寫完之後,都要f.close()關閉檔案,但是實際中,檔案讀寫可能產生IOError,一旦出錯,後面的f.close()就不會呼叫,python
中的with語句用法可以解決這個問題
with open('../dataconfig/test.json',encoding='utf-8') as f: print(f.read()) 輸出結果: hello 我們 326342
開啟多個檔案進行操作
with open('../dataconfig/test.json',encoding='utf-8') as f1,open('../dataconfig/test1.json',encoding='utf-8')
as f2,open('../dataconfig/test2.json',encoding='utf-8') as f3: for i in f1: j = f2.readline() k = f3.readline() print(i.strip(),j.strip(),k.strip())
三、read和readlines()
Ⅰ、read
read()將檔案中的內容全部讀取出來,弊端 如果檔案很大就會非常的佔用記憶體,容易導致記憶體奔潰
f = open('path1/小娃娃.txt',mode='r',encoding='utf-8') msg = f.read(3) msg1 = f.read() f.close() print(msg) print(msg1) 結果: 高圓圓 劉亦菲 張柏芝 楊紫 王菲
Ⅱ、readline():readline()讀取每次只讀取一行
注意點:readline()讀取出來的資料在後面都有一個\n
f = open('path1/小娃娃.txt',mode='r',encoding='utf-8') msg1 = f.readline() msg2 = f.readline() msg3 = f.readline() msg4 = f.readline() f.close() print(msg1) print(msg2) print(msg3) print(msg4) 結果: 高圓圓 劉亦菲 張柏芝 楊紫
解決這個問題只需要在我們讀取出來的檔案後邊加一個strip()就OK了
Ⅲ、readlines()
readlines() 返回一個列表,列表裡面每個元素是原檔案的每一行,如果檔案很大,佔記憶體,容易崩盤
f = open('log',encoding='utf-8') print(f.readlines()) f.close() # 結果['666666\n', 'fkja l;\n', 'fdkslfaj\n', 'dfsflj\n', 'df;asdlf\n', '\n', ]
Ⅳ、for迴圈讀取
可以通過for迴圈去讀取,檔案控制代碼是一個迭代器,他的特點就是每次迴圈只在記憶體中佔一行的資料,非常節省記憶體
f = open('../path1/弟子規',mode='r',encoding='utf-8') for line in f: print(line) #這種方式就是在一行一行的進行讀取,它就執行了下邊的功能 print(f.readline()) print(f.readline()) print(f.readline()) print(f.readline()) f.close()