Python中檔案的操作

2021-09-13 20:24:31 字數 3845 閱讀 7331

python提供了必要的函式和方法進行預設情況下的檔案基本操作。你可以用file物件做大部分的檔案操作。

檔案:硬碟中一塊儲存空間(虛擬的檔案)

檔案操作:根據檔名來操作硬碟的那塊儲存空間,操作方式 讀read 寫write

必需的三個步驟:

1.開啟檔案

2.操作檔案

3.關閉檔案

一、開啟檔案

必須先用python中的內建函式open()開啟乙個檔案,建立乙個file,相關的輔助方法才可以呼叫它進行讀寫。

file object = open(file_name,mode,encoding)

各個引數的細節如下:

file_name:檔案路徑加檔名,file_name變數是乙個包含了你要訪問的檔名稱的字串值。

mode:mode決定了開啟檔案的模式:唯讀,寫入,追加等,預設檔案訪問模式為唯讀(r)。

encoding:設定編碼方式。

二、操縱檔案

模式描述

r以只方式開啟檔案,檔案指標放在檔案開頭,這是預設值。

w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

b以二進位制開啟乙個檔案進行操作,與r,w,a合用,操作時不需要關心檔案編碼

+開啟乙個檔案用於讀寫。與r,w,a合用,對檔案的操作決定於合用的方法。

操作檔案的方法:

模式描述

file.close()

關閉檔案。關閉後檔案不能再進行讀寫操作。

file.flush()

重新整理檔案內部緩衝,直接把內部緩衝區的資料立刻寫入檔案, 而不是被動的等待輸出緩衝區寫入。

file.fileno()

返回乙個整型的檔案描述符(file descriptor fd 整型), 可以用在如os模組的read方法等一些底層操作上。

file.isatty()

如果檔案連線到乙個終端裝置返回 true,否則返回 false。

file.next()

返回檔案下一行。

file.read([size])

從檔案讀取指定的位元組數,如果未給定或為負則讀取所有。

file.readline([size])

讀取整行,包括 "\n" 字元。

file.readlines([sizehint])

讀取所有行並返回列表,若給定sizeint>0,返回總和大約為sizeint位元組的行, 實際讀取值可能比sizeint較大, 因為需要填充緩衝區。

file.seek(offset[, whence])

設定檔案當前位置

file.tell()

返回檔案當前位置。

file.truncate([size])

擷取檔案,擷取的位元組通過size指定,預設為當前檔案位置。

file.write(str)

將字串寫入檔案,返回的是寫入的字元。

file.writelines(sequence)

向檔案寫入乙個序列字串列表,如果需要換行則要自己加入每行的換行符。

seek方法講解

必須在b模式下操作,seek中偏移的是位元組

方法:seek(偏移量, 偏移位置)

偏移量:移動的位元組數,負數是結合模式1,2往前偏移

偏移位置: --

0- 從檔案開始位置開始偏移 |

1- 從當前游標位置開始偏移 |

2- 從檔案末尾開始偏移

檔案內容為「b'你好1234567890'」

游標讀with

open

('source.txt'

,'rb'

)as f:

d1 = f.read(11)

print

(d1)

# print(d1.decode('utf-8'))

當前游標的位置

print

(f.tell())

游標操作 - 從末尾位置開始

f.seek(-3

,2) d2 = f.read(

)print

(d2.decode(

'utf-8'))

# 890

游標操作 - 從當前位置開始

f.seek(-3

,1) d2 = f.read(

)print

(d2.decode(

'utf-8'))

# 34567890

游標操作 - 從頭開始

f.seek(3,

0)d2 = f.read(

)print

(d2)

print

(d2.decode(

'utf-8'))

# 好1234567890

三、關閉檔案

file物件的close()方法重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。

當乙個檔案物件的引用被重新指定給另乙個檔案時,python會關閉之前的檔案。用close()方法關閉檔案是乙個很好的習慣。fileobject.close();

四、with方法

將檔案的關閉交給with管理,當with中邏輯結束後,系統會自動釋放檔案

with

open

('file_name'

,'model'

, encoding=

'utf-8'

)as f

pass

五、檔案的複製就是先讀再寫
文字型別檔案的複製

r =open

('source.txt'

,'r'

, encoding=

'utf-8'

)w =

open

('target.txt'

,'w'

, encoding=

'utf-8'

)for line in r:

# 遍歷就是一行一行讀 取讀檔案的流

w.write(line)

w.flush(

)# 將寫入到記憶體中的資料重新整理到硬碟中

w.close(

)r.close(

)用with

open語法如何處理?

r+: 不會建立檔案的可讀可寫 | w+:建立清空檔案的可讀可寫 | a+:建立不清空檔案(追加)的可讀可寫

with

open

('source.txt'

,'r'

, encoding=

'utf-8'

)as f1:

with

open

('target.txt'

,'a+'

, encoding=

'utf-8'

)as f2:

for line in f1:

f2.write(line)

如果複製非文字型別的資料檔案?

從模式採用b模式,不需要關心編碼問題

with

open

('source.mp4'

,'rb'

)as f1:

with

open

('target.mp4'

,'wb+'

)as f2:

# rb+ | wb | wb+ | ab | ab+

for line in f1:

f2.write(line)

python中檔案的操作

開啟 操作 關閉 基本引數 r readonly 預設引數 只能讀 不能寫 讀取檔案不存在 會報錯 w 寫檔案 write only 檔案存在時,會清空檔案的內容並寫入新的檔案內容 檔案不存在,會建立新的檔案並寫入內容 a 寫檔案 write only 寫 不會清空檔案內容 會在檔案末尾追加 寫 檔...

python中檔案的操作

f open home ceshi mmm.txt w w 為讀寫 f.write zuoshouzhiyue n 寫入資料 記得加 n f.tell 當前在檔案中的位置 14 f.write sadingding n f.tell 25 f.seek 12,1 移動當前位置 12代表移動量 1代表...

python中檔案的操作

一 檔案概述 1.計算機檔案是乙個儲存在儲存器上的資料序列,可以包含任何資料內容 2.檔案包括文字檔案和二進位制檔案。3.資訊量 1024byte 1kb 1024kb 1mb 1024mb 1gb 1024gb 1t 4.字元編碼 4.1ascii編碼 4.2gb2312編碼 4.3gbk編碼 4...