1. 程式人生 > >Python學習之檔案13

Python學習之檔案13

檔案操作

檔案操作的流程

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']