五 檔案處理

2022-09-20 02:51:13 字數 3386 閱讀 2865

方式一:

f=open('

a.txt

','r

',encoding='

utf-8')

data=f.read()

f.close()

#檔案操作完成後,必須close

方式二:

#用with關鍵字開啟檔案,不需要再執行close

with open('

a.txt

','r

') as read_f,open('

b.txt

','w

') as write_f:

data=read_f.read()

write_f.write(data)

r ,唯讀模式【預設模式,檔案必須存在,不存在則丟擲異常】(rt)

w,只寫模式【不可讀;不存在則建立;存在則清空內容】(wt)

a, 追加寫模式【不可讀;不存在則建立;存在則只追加內容】(at)

rb wb ab

注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼

"+"表示可以同時讀寫某個檔案

r+, 讀寫【可讀,可寫】

w+,寫讀【可讀,可寫】

a+, 寫讀【可讀,可寫】

f.read() #讀取所有內容,游標移動到檔案末尾

f.readline() #讀取一行內容,游標移動到第二行首部

f.readlines() #讀取每一行內容,存放於列表中

f.write('1111\n222\n') #針對文字模式的寫,需要自己寫換行符

f.write('1111\n222\n'.encode('utf-8')) #針對b模式的寫,需要自己寫換行符

f.writelines(['333\n','444\n']) #檔案模式

f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

f.readable() #檔案是否可讀

f.writable() #檔案是否可讀

f.closed #檔案是否關閉

f.encoding #如果檔案開啟模式為b,則沒有該屬性

f.flush() #立刻將檔案內容從記憶體刷到硬碟

f.name

f=open('

c:\\python34\\aaa.txt

','a+

',encoding='

utf_8')

f.writelines(

'222\n333\n')

f.flush()

f.seek(0)

#讀取檔案前,必須先確認此刻游標的位置 seek(0)相當於seek(0,0)從檔案開頭數,seek(0,1)表示從當前位置開始數,seek(0,2)表示從末尾開始數

data=f.read()

print(data)

檔案的資料是存放於硬碟上的,因而只存在覆蓋、不存在修改這麼一說,我們平時看到的修改檔案,都是模擬出來的效果,具體的說有兩種實現方式:

方式一:將硬碟存放的該檔案的內容全部載入到記憶體,在記憶體中是可以修改的,修改完畢後,再由記憶體覆蓋到硬碟

import

oswith open(

'c:\\python34\\aaa.txt

','r+

',encoding='

utf_8

') as a,open('

c:\\python34\\a11.txt

','w+

',encoding='

utf_8

') as b:

data=a.read()

data=data.replace('

killall

','debug')

b.write(data)

os.remove(

'c:\\python34\\aaa.txt')

os.rename(

'c:\\python34\\a11.txt

','c:\\python34\\aaa.txt

')

方式二:將硬碟存放的該檔案的內容一行一行地讀入記憶體,修改完畢就寫入新檔案,最後用新檔案覆蓋原始檔

with open('

c:\\python34\\aaa.txt

','r+

',encoding='

utf_8

') as a,open('

c:\\python34\\a11.txt

','w+

',encoding='

utf_8

') as b:

for line in

a: line=line.replace('

killall

','debug')

b.write(line)

os.remove(

'c:\\python34\\aaa.txt')

os.rename(

'c:\\python34\\a11.txt

','c:\\python34\\aaa.txt

')

with open('

c:\\python34\\a.txt

','r+

',encoding='

utf_8

') as a:

sum=0

for data in

a: data1=data.split()

sum+=int(data1[1])*int(data1[2])

print(sum)

2.修改檔案內容,把檔案中的alex都替換成keven

import

oswith open(

'c:\\python34\\a.txt

','r+

',encoding='

utf_8

') as a,open('

c:\\python34\\a11.txt

','w+

',encoding='

utf_8

') as b:

for data in

a: data=data.replace('

alex

','keven')

b.write(data)

os.remove(

'c:\\python34\\a.txt')

os.rename(

'c:\\python34\\a11.txt

','c:\\python34\\a.txt

')

Python筆記 五 檔案處理

1.開啟pi digits.txt檔案 with open pi digits.txt as file object contents file object.read print contents 在read函式到達檔案末尾會返回乙個空字串,顯示出來比原始檔多乙個空行 print contents...

五 檔案操作

字元型的檔案會先編碼然後再儲存。所以讀取這些檔案的時候就需要解碼。檔案的開啟模式有唯讀 r 只寫 w 追加 a 以及二進位制模式和二進位制加下的唯讀 rb 只寫 wb 追加 ab 唯讀 預設模式,檔案必須存在,不存在則丟擲異常 只寫 不可讀 不存在則建立 存在則清空內容 追加 不可讀 不存在則建立 ...

Python學習五 檔案

with open pi digits.txt as file object contents file object.read print contents 其中,pi digits.txt 為同目錄下的文字檔案。關鍵字with在不再需要訪問檔案後將其關閉。在這個程式中,注意到我們呼叫了open ...