Python學習之檔案13
阿新 • • 發佈:2018-12-17
檔案操作
檔案操作的流程
1. 建立檔案物件:
2. 檔案操作(讀或者寫)
3. 關閉檔案
檔案讀操作
f = open('小重山','r',encoding = 'utf8') '''獲得檔案物件,小重山為當前目錄下的一個檔案 'r'代表為讀''' data = f.read() #對檔案進行讀操作,讀的內容放在data中 #f.read(5) 讀取5個字元 print(data) f.close() #關閉檔案 昨夜寒蛩不住鳴, 驚回千里夢,已三更。 起來獨自繞階行, 人悄悄,簾外月朧明。 白首為功名,舊山松竹老,阻歸程, 欲將心事付瑤琴, 知音少,絃斷有誰聽。
檔案寫操作
f = open('小重山','w') #沒有這個檔案則建立這個檔案
'''寫狀態下不可讀 f.read() 錯誤'''
f.write("hello world") #之前檔案裡面的內容全部清空,
f.write('alex') #之前寫的hello world還在,之間無空格和換行
f.close()
'''開啟一個檔案就得關掉,否則不安全(雖然python在程式執行結束時會自動幫你關掉)'''
hello worldalex
#如果寫的時候不希望清空檔案裡面的內容
f = open('小重山','a')
f.write('hello')
f.close( )
昨夜寒蛩不住鳴。
驚回千里夢,已三更。
起來獨自繞階行。
人悄悄,簾外月朧明。
白首為功名,舊山松竹老,阻歸程。
欲將心事付瑤琴。
知音少,絃斷有誰聽。
hello
檔案是立即寫到磁碟(檔案)裡面去的嗎?
觀察下面的程式:
import time
f = open('小重山','a')
f.append('hello')
time.sleep(30)
f.close()
發現hello並沒有立即寫入檔案,而是程式結束(過了30s)才寫入檔案的,那麼在這30s,'hello’放在哪裡?
其實’hello’在這30s內放在緩衝區,等到程式執行到f.close()這個命令,程式才把’hello’寫入磁碟,由於有time.sleep(30)這個命令,程式過了30s才執行f.close(),所以程式並沒有立馬把東西直接寫入檔案。
那麼為什麼不直接寫入檔案,而是放在緩衝區。原因就是磁碟很慢,想必大家都有體會,你開啟一個大型軟體會花很長的時間,想象一下,如果你進行大量檔案操作時,計算機直接寫入檔案是很慢的,所以計算機先把東西放在緩衝區也就是在記憶體中,等到執行到f.close()命令在直接放入檔案中。
檔案操作的具體方法
f = open('小重山','r')
data = f.readline() #讀取第一行的內容
print(data)
data = f.readline() #讀取第二行的內容
print(data)
data = f.readlines() #讀取所有行,得到一個列表,每個元素為每一行的內容
print(data)
昨夜寒蛩不住鳴。
驚回千里夢,已三更。
['起來獨自繞階行。\n', '人悄悄,簾外月朧明。\n', '白首為功名,舊山松竹老,阻歸程。\n', '欲將心事付瑤琴。\n', '知音少,絃斷有誰聽。\n', 'hello']