天天看點

Python3學習筆記03-讀寫檔案

1. 讀取一個文本檔案,可以用下述方式:

myfile=open(r'abc.txt')
x=myfile.read()
print(x)
           

也可以用下述方式:

with open('abc.txt') as f:
    for line in f:
        print(line.strip())
           

    with的作用是讓Python自動在檔案操作完畢後關閉檔案。也可以用close()主動關閉。strip的作用是去除讀取産生的空行。

2. 寫檔案

下面代碼在檔案末尾追加寫入:

with open('abc.txt') as f:
    for line in f:
        print(line.strip())
           

其中參數'a'表示append,追加;如果改為'w',則變為寫入(覆寫),無此檔案時則建立。其他還有'r+', 'w+', 'rb', 'wb'等,對應于讀寫、寫讀、二進制讀,二進制寫。

其中,檔案路徑盡量不要出現中文;直接寫檔案名abc.txt或xxxx/abc.txt表示在程式目錄中或其子目錄xxx中打開檔案。也可寫上絕對路徑,一般用斜杠即可,用反斜杠時因為反斜杠有時用于轉義,是以會出現意外結果,如檔案名以n開頭,\n就成了換行的意思了。也可以在字元串前加r表示使用原生字元串,如r'abc.txt'。

3. 讀寫二進制檔案

Python提供了一個标準子產品pickle用以存取任意對象,很實用,例如:

myfile=open('abc.bin','wb')
myfile.write(b'abcd\nefg')
myfile.close()

myfile=open('abc.bin','r')
x=myfile.read()
print(x)   #分兩行列印出abcd和efg
myfile.close()

myfile=open('abc.bin','rb')
x=myfile.read()
print(x)  #列印出b'abcd\nefg'
myfile.close()
           

4. 檔案序列化(二進制)

users=[]
users.append({'id':'richard','pwd':'abc'})
users.append({'id':'vivian','pwd':'bac'})
users.append({'id':'david','pwd':'cab'})
print('這是輸入的資料:\n',users)
myfile=open('mydata.bin','wb')
import pickle
pickle.dump(users,myfile)
myfile.close()

print('資料已經寫入檔案。')

myfile=open('mydata.bin','rb')
x=pickle.load(myfile)
print('這是從檔案中讀出的資料:\n',x)