1. 程式人生 > >Python檔案操作的兩種方法 快速入門

Python檔案操作的兩種方法 快速入門

python內建函式

1.試著向檔案中寫一句話

路徑:“C:/Users/thinkpad/Desktop/demo.txt” 開啟方式:寫(‘w’)

# -*- encoding: UTF-8 -*-
fp = open("C:/Users/thinkpad/Desktop/demo.txt",'w')
fp.write('看,我學會了檔案操作!')
fp.close()  #關閉檔案

你可以反覆呼叫write()來寫入檔案,但是務必要呼叫f.close()來關閉檔案。當我們寫檔案時,作業系統往往不會立刻把資料寫入磁碟,而是放到記憶體快取起來,空閒的時候再慢慢寫入。只有呼叫close()方法時,作業系統才保證把沒有寫入的資料全部寫入磁碟。忘記呼叫close()的後果是資料可能只寫了一部分到磁碟,剩下的丟失了。所以,還是用with語句來得保險:

# -*- encoding: UTF-8 -*-
with open("C:/Users/thinkpad/Desktop/demo.txt",'w') as fp:
		fp.write('看,我學會了檔案操作!')

注意: 在這個示例中,如果你指定的路徑下有沒有’demo.txt’檔案也沒關係,python會自動建立這個檔案再執行寫的操作,具有這種特性的開啟方式還有’w+’、‘a’、'a+‘等。其含義與操作與C語言中的相同。 提醒: 直接從系統中拷貝過來的路徑名形式為 “D:\學習筆記\python檔案操作.txt” ,要注意’'在python中為特殊字元(轉義字元),所以直接這樣用會報錯,你需要改成 :“D:\學習筆記\python檔案操作.txt” 或 “D:/學習筆記/python檔案操作.txt”

2.把剛才的話讀出來

# -*- encoding: UTF-8 -*-
with open("C:/Users/thinkpad/Desktop/demo.txt",'r') as fp:
		str = fp.read()
		print(str)

pickle模組

*在操作上,pickle模組和剛才介紹的內建函式並沒有多大區別,可為什麼還要引入pickle模組?主要優點有以下幾點: 1.pickle提供了一個簡單的持久化功能。可以將物件以檔案的形式存放。 2.pickle模組只能在Python中使用,python中幾乎所有的資料型別(列表,字典,集合,類等)都可以用pickle來序列化,且pickle序列化後的資料,可讀性差,人一般無法識別,相對安全。

使用八股

標頭檔案:import pickle

開:檔案變數=open(“檔案路徑變數名”,“wb”) 存:pickle.dump(待寫入變數,檔案變數) 關:檔案變數.close()

# -*- encoding: UTF-8 -*-
fp=open("save.dat","wb")  #以二進位制寫入
pickle.dump(obj,fp)
save_file.close()

# -*- encoding: UTF-8 -*-
load_file=open("file_name.dat","rb")
obj=pickle.load(load_file)
load_file.close()

當然,我似乎更推薦你用上面介紹的with結構,簡單且安全!

接下來我們來看一個例子:

# -*- encoding: UTF-8 -*-
a = ['老和尚','小和尚']
a.append(a)  #新增遞迴
print(a)
print(a[2][0],a[2][1],a[2][2][0],a[2][2][1])

結果:

['老和尚', '小和尚', [...]]
老和尚 小和尚 老和尚 小和尚

這就是Python中列表的遞迴,無窮無盡的老和尚和小和尚,用第一種檔案操作似乎無法儲存這樣特殊的物件,但是pickle模組就很好實現。程式碼如下:

# -*- encoding: UTF-8 -*-
a = ['老和尚','小和尚']
a.append(a)  #新增遞迴
with open("C:/Users/thinkpad/Desktop/demo.pkl","wb") as fp:
    	pickle.dump(a,fp)
#如果你要把它讀出來:
with open("C:/Users/thinkpad/Desktop/demo.pkl","rb") as fp:
    	a = pickle.load(fp)

上面可以引導你快速入門檔案操作,想要了解更多請多查閱相關資料,有興趣可以去了解一下OS模組。 一定要動手試一試