File I/O
目錄
- 要讀取或寫入一個檔案,一定要先知道該檔案在什麼位置。
- 檔案路徑:目錄/目錄/目錄/檔案名稱
- 絕對路徑:C:/Users/admin/Desktop/test.txt
- 相對路徑:test.txt (假如我現在在桌面)
讀檔
f = open('hello.txt','r')
s = f.read(12) #一次讀取幾個字元
f.close() #讀完之後關檔案
print(s)
讀檔method:
s = f.read() #不指定讀多少個字元,會一次讀完
s = f.readline() #一次讀一行
for line in f: # f 是open過後的file object print(line) # 一次讀一行
寫檔
f = open('hello.txt','w')
f.write('hello, my friends.')
f.close()
寫檔method:
f.write('123456') #寫入檔案的是一個字串
print('123456',file = f) #print指定要印在f上面,這樣在檔案裡會是'123456\n',因為print預設的end是換行
開檔
file_object = open(file_name, mode)
#file_object:指定的變數名稱
#file_name(string):檔案的絕對路徑或相對路徑
#mode(string):開檔模式
Mode | 描述 | Binary Mode |
---|---|---|
r | 讀檔模式,檔案位置必須存在 | rb |
w | 寫檔模式,若檔案存在,把檔案清空從頭寫入;若不存在,新建一個該檔案 | wb |
a | 寫檔模式,若檔案存在,從檔案的尾巴寫入;若不存在,新建一個該檔案 | ab |
開檔二式
with open('hello.txt','r') as f: s = f.read() #f只在此縮排下才能使用 print(s) #這裏f已經被關閉了
pickle
- 因為非binary的開檔在python只能寫入字串,為了能把我們宣告的其他變數(list, dict)寫到檔案裡面,我們需要使用pickle。
import pickle
a = [1,2,3]
with open('my_list.pickle','wb') as f: #因為pickle需要用binary的方式,所以開檔模式需要加個b
pickle.dump(a,f) #寫入pickle.dump(要寫的東西, 檔案物件)
- 用上面的方式寫入過之後,就可以在其他程式中讀取出來直接使用
import pickle
with open('my_list.pickle','rb') as f:
a = pickle.load(f)
a[0]+=1
print(a)