python檔案操作

2022-06-20 20:00:12 字數 2837 閱讀 6554

什麼是檔案?

作業系統給使用者提供的可以操作硬碟的簡易介面

python的檔案操作:

r:  讀

1、只能讀,不能寫, f.readable() = true

2、如果檔案不存在,會報錯。

w: 寫

1、不能進行讀操作,只能寫。

2、寫的時候會覆蓋之前的內容

3、如果指定檔案不存在,會建立乙個,不會報錯。

a: 追加

1、不能進行讀操作

2、指定檔案不存在,不會報錯,會建立乙個檔案。

3、游標預設在末尾。

檔案操作單位
t:  文字模式

必須和r/w/a連用,比如 rt, wt, at, 如果不寫,預設為t

b: 二進位制模式

不能單獨在mode裡使用,必須和r/w/a連用。通常用來處理非文字檔案

open 關鍵字

f = open('檔案路徑',  mode='', encoding="")

python2中讀取檔案預設使用的是ascll編碼,python3讀取檔案預設使用utf-8

python2讀取檔案列印時會報錯

注意:如果檔案操作是b模式的話就不能寫encoding,不然會報錯 :valueerror: binary mode doesn't take an encoding argument

單獨用open操作檔案時,需要關掉檔案介面 f.close() 。因為如果不關的話,雖然變數f,python會通過垃圾**機制**掉,但是對於作業系統,它會把這個檔案操作的介面一直開著,導致浪費資源。

開啟乙個檔案的時候,會占用兩部分資源:作業系統級開啟的檔案 +  應用程式的變數。所以要注意,兩個資源都要及時**。

python 提供了乙個方法,能自動**作業系統級開啟的檔案資源。那就是with關鍵字。

with open('檔案路徑', mode='') as f:

python3 操作檔案只有一種方法 open()

python2 操作檔案有兩種方法 file() open()

file(), open()的操作都比較類似,但是兩個有本質的區別,file是乙個檔案類,開啟檔案時相當於是在構造檔案類。而open()是在用python的乙個內建函式來操作。

python2讀取檔案預設使用的是ascll,python3預設使用的是utf-8編碼

f.read() 讀取所有資料

f.readline() 讀取一行資料, 游標移動到第二行行首

f.readlines()  返回乙個列表,列表元素是每一行的內容

f.readable() 判斷不否可讀

f.write() 寫入資料

當write針對 b模式寫入時,需要把資料進行encode,  將記憶體的unicode編碼內容 encode成二進位制檔案,才能寫入。

f.writelines()  寫入乙個迭代器物件,比如列表。

當寫入針對b模式時,需要把迭代器裡面的元素進行encode,

f.writeable()  判斷能不能寫

f.truncake(size:int)  截斷檔案,保留 0-size長度的檔案,其餘的全部刪掉。

truncake是截斷檔案,所以檔案的開啟方式必須是可寫,w或者w+會清空檔案,所以不能選擇。因此truncake截斷檔案只能在 r+, a, a+模式下進行。

f.tell() 檢視游標移動了多少位

f.seek(offset:int, whence=0)

offset: 游標移動的位數

whence 有三種選擇 0, 1, 2

0:表示游標從頭開始

1:表示游標從當前位置開始

2:表示游標從尾部開始

注意:1和2模式只能在b模式下使用,且只能以bytes移動檔案。

思考:如何修改檔案內的內容?

修改時,開啟的檔案必須可寫,而w,w+之類的會清空檔案,修改不了。a,a+模式,只能在尾部新增。也不行

使用r+的時候,再利用f.seek(),移動游標,新內容會覆蓋舊內容。如果長度不一樣,就會把要用的內容覆蓋掉。

方案一:將檔案的內容全部讀取出來,利用replace替換掉要修改的內容。再將替換過的內容利用w/w+寫入檔案

with open('檔案路徑', 『r』, encoding='utf-8'):

data = f.read()

with open('檔案路徑', 'w', encoding='utf-8') as f:

res = data.replace(old, new)

f.write(res)

缺點:當檔案很大時,將內容一次性全read出來,有可能造成記憶體溢位。

優點:不佔硬碟空間,硬碟始終只有乙個檔案。

方案二:將檔案的內容逐行讀取,再開啟乙個新檔案,寫入逐行讀取並修改後的內容。最後把舊檔案刪了,保留並將新檔案重新命名為舊檔案。

with open('檔案路徑', 『r』, encoding='utf-8') as f, \

open('新檔案路徑',『a', encoding='utf-8') as f2, 

for line in f:

line_data = line.replace(old, new)

f2.write(line_data)

import os

os.remove('舊檔案')

os.rename('新檔案', 『舊檔案』)

優點:記憶體中始終只有一行內容,不佔記憶體

缺點:在某一時刻,硬碟中會存在兩個檔案

python 檔案操作

簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...

python檔案操作

1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...

Python 檔案操作

1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...