python的文件式如何操作_Python文件操作
文件常用IO操作——open
#r模式
f = open("test","r") #只讀
f.read()
f.write("abc")
f.close()#w模式
f = open("test","w") #只寫打開
f.write("abc")
f.close()
r模式
只讀打開文件,若使用write方式,會拋異常
如果文件不存在,拋出異常
w模式
只寫方式打開,如果讀取則拋異常
若文件不存在,則直接創建文件
如果文件存在,清空文件內容并寫入
#x模式
f = open("test","x") #只寫打開
f.read()
f.write("abc")
f.close()#a模式
f = open("test","x") #只寫打開
f.read()
f.write("abc")
f.close()
x模式
文件不存在,則直接創建文件,并只寫方式打開
文件存在,則拋異常
a模式
文件存在,只寫打開,追加內容
文件不存在,則創建后,只寫打開,追加內容
r是只讀,wxa都是只寫
wxa模式都可產生新文件
文件指針
mode = r 指針起始在0位置
mode = a 指針起始在EOF文件末尾位置
tell() 顯示指針當前位置
seek(offset[,whence]) 移動文件指針,是按照字節偏移
seek
seek(offset[,whence]) 移動文件指針。是按照字節偏移
offset 偏移的字節數??梢詾檎拓摂?。
偏移后可以超過文件末尾EOF,超過部分用字節O表示。
不能超過文件開始。如果超過會報錯
tell
可以顯示當前文件指針位置,注意指針位置是按照字節計算的。
fil = open("test","a+") #打開文件
fil.write("abcd你好")
fil.seek(0)#指針回到起始位置
fil.seek(2,0) #指針相對于開始位置向左移動2個位置
print(fil.tell()) #查看當前指針位置
fil.close() #關閉文件流
lush() 將緩沖區數據寫入到磁盤
close() 關閉文件流。關閉前會調用flush()。文件已經關閉,再次關閉沒有任何效果
seekable() #是否可以seek
readable() #是否可讀
writable() #是否可寫
closed #是否已經關閉
buffering緩沖區
-1 表示使用缺省大小的buffer。
0 只在二進制模式使用,表示關閉buffer
1 只在文本模式使用,表示使用行緩沖,意思就是見到換行符flush
大于1 使用指定buffer的大小
buffer緩沖區:緩沖區是一個內存空間,一般來說是一個FIFO隊列,到緩沖區滿了或者達到閥值,數據才會flush到磁盤。flush()將緩沖區數據寫入到磁盤,close()關閉文件流,關閉前會調用flush()
總結規律:
文本模式,一般都用默認緩沖區大小
二進制模式,是一個個字節的操作,可以指定buffer的大小
一般來說,默認緩沖區大小是比較好的選擇,除非明確知道,否則不調控它
一般編程中,明確知道需要寫磁盤了,都會手動調用一次flush,而不是等到自動調用flush或者close的時候。
encoding編碼
encoding 編碼,僅文本模式使用。如果是b字節模式,無用
默認值為None表示使用缺省編碼,依賴操作系統。即 為默認值None是,使用文本模式打開文件時,默認使用的編碼為系統默認編碼。windows下缺省值為GBK(0xBOA1),Linux下缺省值為:UTF-8
上下文管理
一般情況,系統對打開文件上限做了限制,linux中可以使用ulimit -a 查看所有限制。其中open file就是打開文件數的現在,默認是1024。如果打開文件達到上線,程序在次打開文件就會出錯。出現OSError異常。為了防止打開文件后沒有關閉文件,一般都需要添加異常處理。當發生異常是。關閉文件。
f =Nonetry:
f= open('test')
f.write("abc") #文件是用只讀模式打開,寫入失敗。
f.close()finally:if f!=None:
f.close()#當發生異常,如果f不為空,關閉文件流。釋放文件對象
上下文管理:一種特殊的語法,交給解釋器去釋放文件對象
使用with…as 關鍵字
上下文管理的語句塊并不會開啟新的作用域
with語句塊執行完的時候,會自動關閉文件對象
第一種寫法示例
delf#使用with...as 語法,當代碼塊中出現異常時,會自動關閉f
with open("test") as f:
f.write("abc") #因為是只讀模式打開,所有會出錯。寫入失敗#測試f發現f已經關閉
f.closed
第二種寫法:
f = open("test")
with f:
f.write("abcd") #因為是只讀模式打開,所有會出錯。寫入失敗#測試f,f已經關閉
f.closed
對于類似于文件對象的IO對象,一般來說都需要在不使用的時候關閉,注銷,已釋放資源。IO被打開的時候,會獲得一個文件描述符。計算機資源是有線的,所以操作系統都會做限制。就是為了保護計算機的資源不要被完全耗盡,計算資源是共享的,不是獨占的。
一般情況下,除非特別明確的知道資源情況,否則不要提高資源的限制值來解決問題。
總結
以上是生活随笔為你收集整理的python的文件式如何操作_Python文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝全民保终身养老金怎么退保
- 下一篇: websocket python爬虫_p