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)

results matching ""

    No results matching ""