python 檔案操作

2021-09-29 15:24:32 字數 4688 閱讀 5125

寫入檔案

with操作

檔案偏移量

開啟檔案

file_object =

open

(file_name, access_mode=

'r', buffering=-1

,[encoding=

'編碼方式'])

'''功能:開啟乙個檔案,返回乙個檔案物件。

引數:1. file_name : 檔名; (寫絕對/相對路徑)

2. access_mode: 開啟檔案的方式,預設為 r

3. buffering 1表示有行緩衝,預設則表示使用系統預設提供的緩衝機制。(緩衝區)

4. encoding: windows下一般為gbk,linux下一般為utf-8

返回值:成功返回檔案操作物件。

'''

文字檔案既可以用文字模式開啟,也可以用二進位制模式開啟。

如果以文字形式開啟,需以字元修改。

access_mode操作r

以讀方式開啟 檔案必須存在

w以寫方式開啟,檔案不存在則建立,存在清空原有內容

a以追加模式開啟

r+以讀寫模式開啟 檔案必須存在

w+以讀寫模式開啟檔案

a+以讀寫模式開啟 不存在則建立,存在則追加模式

以二進位制檔案開啟的檔案,需以位元組串的方式修改。

二進位制檔案必須以二進位制模式開啟,如果以文字方式開啟,讀寫時會報錯.因為不是所有的二進位制都有文字。

access_mode

操作rb

以二進位制讀模式開啟 作用同r

wb以二進位制寫模式開啟 作用同w

ab以二進位制追加模式開啟 作用同a

rb+以二進位制讀寫模式開啟 作用同r+

wb+以二進位制讀寫模式開啟 作用同w+

ab+以二進位制讀寫模式開啟 作用同a+

讀取檔案

read(

[size]

)'''

功能: 用來直接讀取檔案中字元。

引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,

給定size最多讀取 給定數目個字元(位元組)。size寫成幾就表示讀取多少個字元

太大的檔案不建議用read()

返回值: 返回讀取到的內容

'''

注意:檔案過大時候不建議直接讀取到檔案結尾,讀到檔案結尾會返回空字串。

readline(

[size]

)'''

功能: 讀取檔案中一行

引數: 如果沒有給定size引數(預設值為-1)或者size值為負,表示讀取一行,

給定size表示最多讀取指定的字元(位元組)

返回值: 返回讀取到的內容

'''

readlines(

[sizeint]

)'''

功能: 讀取檔案中的每一行,返回乙個列表,每一行為列表中的每乙個元素

引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,

給定size表示讀取到size字元所在行為止。(讀取到該字元所在的行)

返回值: 返回讀取到的內容列表

'''

檔案物件本身也是乙個可迭代物件,在for迴圈中可以迭代檔案的每一行

在乙個程式裡面讀檔案,下次再讀都是繼續往下讀,不是從頭開始讀

示例
#開啟檔案

#讀寫方式開啟已存在的檔案 test

f =open

('test'

,'r'

)#讀操作

#迴圈讀取檔案,每次讀取26個字元,讀到檔案結尾時返回空字串

while

true

: data = f.read(26)

#讀到檔案結尾,跳出迴圈

ifnot data:

break

print

('讀取到的資料:'

,data)

#關閉f.close(

)

寫入檔案
write(string)

功能: 把文字資料或二進位制資料塊的字串寫入到檔案中去

引數:要寫入的內容

返回值:寫入的字元個數

writelines(str_list)

功能:接受乙個字串列表作為引數,將它們寫入檔案

引數: 要寫入的內容列表

示例
'''

將乙個檔案拷貝乙份,重新取另外乙個名字

檔案可能是文字,也可能是二進位制

'''filename =

input

('檔案:'

)#以二進位制讀方式開啟,檔案需存在

fr =

open

(filename,

'rb'

)#以二進位制寫方式開啟,沒有就新建

fw =

open

('備份『+filename,'wb')

#為防止檔案特別大,迴圈讀取,一次讀1024位元組

while

true

: data = fr.read(

1024

)#讀完會返回空,跳出

ifnot data:

break

fw.write(data)

fr.close(

)fw.close(

)

with操作

with語句用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的「清理」操作,釋放被訪問的資源,比如檔案讀寫後自動關閉、執行緒中鎖的自動獲取和釋放等。

語法:

with context_expression [as obj]:

with

open

('file'

,'r+'

)as f:

# open得到的物件等於f,結束時with語句會自動銷毀f,所以不需要額外close

f.read(

)

檔案偏移量

1. tell()函式:獲取檔案偏移量大小

f =

open

('test'

,'w+'

)f.write(

'hello world'

)print

('偏移量:,f.tell())

#獲取檔案偏移量,列印出:偏移量:11

data = f.read(

)print

(data)

#不會列印出資料,因為檔案偏移到資料最後,後面就沒有資料了

f.close(

)

注:以r/w的方式重新開啟檔案時,檔案偏移量會重置;以a的方式重新開啟檔案時,檔案偏移量會在末尾

f =

open

('test'

,'w+'

)f.write(

'hello world'

)f.close(

)#關閉檔案

f =open

('test'

,'r'

)#重新開啟檔案

data = f.read(

)print

(data)

#此時就能讀取到資料

f.close(

)

2. seek(offset[,whence]):移動檔案偏移量位置

引數:offset代表相對於某個位置移動的位元組數,正數表示向後移動,負數表示向前移動

whence是基準位置的預設值為0,代表從檔案開頭算起,1代表從當前位置算起,2代表從檔案末尾算起(必須以二進位制開啟檔案時基準位置1或2才能使用),所以開啟使用seek()時一般以二進位制開啟

f =

open

('test'

,'w+'

)f.write(

'hello world'

)f.seek(0,

0)#以開頭為基準,移動0個位置

data1 = f.read(

)print

(data1)

#此時就可以列印出來:hello world

f.seek(5,

0)#以開頭為基準,移動5個位置

data2 = f.read(

)print

(data2)

#列印出: world

f.close(

)

f =

open

('test'

,'wb+'

)#以二進位制方式開啟

f.write(b'hello world'

)f.seek(-5

,2)#將檔案偏移量定位到開頭

data = f.read(

)print

(data)

#列印出:b'world'

f.close(

)

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後面加上...