讀和寫檔案
open() 將會返回一個 file 物件,基本語法格式如下:
open(filename, mode)
- filename:包含了你要訪問的檔名稱的字串值。
- mode:決定了開啟檔案的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個引數是非強制的,預設檔案訪問模式為只讀 (r)。
讀檔案
f.read()
- 為了讀取一個檔案的內容,呼叫 f.read(size), 這將讀取一定數目的資料, 然後作為字串或位元組物件返回。
- size 是一個可選的數字型別的引數。 當 size 被忽略了或者為負, 那麼該檔案的所有內容都將被讀取並且返回。
f.readline()
- f.readline() 會從檔案中讀取單獨的一行。換行符為 '\n'。f.readline() 如果返回一個空字串, 說明已經已經讀取到最後一行。
- 注意:readline會將換行符也讀出來
f.readlines()
- f.readlines() 將返回該檔案中包含的所有行。
- 如果設定可選引數 sizehint, 則讀取指定長度的位元組, 並且將這些位元組按行分割。
- 注意:讀出的是一個裝有字串的列表,每一元素代表檔案的一行內容,同時也會將每一行的換行字元讀出
另一種方式是迭代一個檔案物件然後讀取每行:
- 同樣注意也會將每一行的換行字元讀出
# 開啟一個檔案
f = open("/tmp/foo.txt", "r")
for line in f:
print(line, end='')
# 關閉開啟的檔案
f.close()
複製程式碼
寫檔案
f.write()
- f.write(string) 將 string 寫入到檔案中, 然後返回寫入的字元數。
- 如果要寫入一些不是字串的東西, 那麼將需要先進行轉換:
# 開啟一個檔案
f = open("d:\\foo1.txt", "w")
value = ('www.syc.com', 14)
s = str(value)
f.write(s)
# 關閉開啟的檔案
f.close()
寫入後檔案內容:('www.syc.com', 14)
複製程式碼
f.tell() f.tell() 返回檔案物件當前所處的位置, 它是從檔案開頭開始算起的位元組數。
- 具體看內容佔幾個位元組,比如漢字就佔兩個位元組
f.seek()
- 如果要改變檔案當前的位置, 可以使用 f.seek(n) 函式。
- 將檔案指標移動到第n個位元組
- n值為預設為0,即檔案開頭。
用檔案儲存Python物件
python的pickle模組實現了基本的資料序列和反序列化。
- 通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存。
- 通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。
基本介面:
pickle.dump(obj, file)
有了 pickle 這個物件, 就能對 file 以讀取的形式開啟:
x = pickle.load(file)
注意:一定要使用load()方法才能將真實的資料取出,例:
import pickle
x = [1, 2, 3]
f = open('d:\\a.txt', 'wb')
pickle.dump(x, f)
f.close()
f = open('d:\\a.txt', 'rb')
print(f.read())#b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
f.seek(0)
x=pickle.load(f)
print(x)#[1, 2, 3]
複製程式碼