讀和寫檔案
open() 將會返回一個 file 物件
open(filename, mode)
不同模式開啟檔案的完全列表:https://www.runoob.com/python3/python3-inputoutput.html
簡單的程式碼
1 f=open("exp.txt",'w')
2 f.write("hhhhhh")
3 f.close()
4 f=open("exp.txt",'w')
5 f.write('fugaighhhhhh')
6 f.close()
7 f=open("exp.txt",'a')
8 f.write('\nzhuijiahhhh')
9 f.close()
檔案物件的方法
- f.read()
為了讀取一個檔案的內容,呼叫 f.read(size), 這將讀取一定數目的資料, 然後作為字串或位元組物件返回。size 是一個可選的數字型別的引數。 當 size 被忽略了或者為負, 那麼該檔案的所有內容都將被讀取並且返回。
- f.readline()
f.readline() 會從檔案中讀取單獨的一行。換行符為 '\n'。f.readline() 如果返回一個空字串, 說明已經已經讀取到最後一行。
- f.readlines()
f.readlines() 將返回該檔案中包含的所有行。如果設定可選引數 sizehint, 則讀取指定長度的位元組, 並且將這些位元組按行分割。
- f.write()
f.write(string) 將 string 寫入到檔案中, 然後返回寫入的字元數。
如果要寫入一些不是字串的東西, 那麼將需要先進行轉換。
# 開啟一個檔案 f = open("/tmp/foo1.txt", "w") value = ('www.runoob.com', 14) s = str(value) f.write(s) # 關閉開啟的檔案 f.close()
- f.tell()
f.tell() 返回檔案物件當前所處的位置, 它是從檔案開頭開始算起的位元組數。
- f.seek()
如果要改變檔案當前的位置, 可以使用 f.seek(offset, from_what) 函式。from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示檔案的結尾,例如:
-
- seek(x,0) : 從起始位置即檔案首行首字元開始移動 x 個字元
- seek(x,1) : 表示從當前位置往後移動x個字元
- seek(-x,2):表示從檔案的結尾往前移動x個字元
- f.close()
當你處理完一個檔案後, 呼叫 f.close() 來關閉檔案並釋放系統的資源,如果嘗試再呼叫該檔案,則會丟擲異常。
當處理一個檔案物件時, 使用 with 關鍵字是非常好的方式。在結束後, 它會幫你正確的關閉檔案。 而且寫起來也比 try - finally 語句塊要簡短。
>>> with open('/tmp/foo.txt', 'r') as f: ... read_data = f.read() >>> f.closed True
pickle模組
python的pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存。通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。
基本介面:
pickle.dump(obj, file, [,protocol])
對 file 以讀取的形式開啟
x = pickle.load(file)
1 import pickle 2 3 # 使用pickle模組將資料物件儲存到檔案 4 data1 = {'a': [1, 2.0, 3, 4+6j], 5 'b': ('string', u'Unicode string'), 6 'c': None} 7 8 selfref_list = [1, 2, 3] 9 selfref_list.append(selfref_list) 10 11 output = open('data.pkl', 'wb') 12 13 # Pickle dictionary using protocol 0. 14 pickle.dump(data1, output) 15 16 # Pickle the list using the highest protocol available. 17 pickle.dump(selfref_list, output, -1) 18 19 output.close()
1 import pprint, pickle 2 3 #使用pickle模組從檔案中重構python物件 4 pkl_file = open('data.pkl', 'rb') 5 6 data1 = pickle.load(pkl_file) 7 pprint.pprint(data1) 8 9 data2 = pickle.load(pkl_file) 10 pprint.pprint(data2) 11 12 pkl_file.close()
關於file物件的詳細方法和引數
https://www.runoob.com/python3/python3-file-methods.html
python3 檔案/目錄方法
https://www.runoob.com/python3/python3-os-file-methods.html