Python 10 操作檔案

2021-09-11 10:52:51 字數 4441 閱讀 3573

開啟檔案,得到檔案的物件(控制代碼)

通過檔案物件(控制代碼)操作檔案

儲存並關閉檔案

在 python中使用open() 函式來操作檔案。

開啟檔案,得到檔案控制代碼,並把乙個變數名分配給這個檔案控制代碼

變數名 =

open

('檔案路徑'

,'開啟模式'

, encoding =

'字元編碼'

)f_obj =

open

('a.txt'

,'r'

, encoding=

'utf-8'

)通過控制代碼對檔案進行操作

data = f_obj.read(

)print

(data)

關閉檔案

f_obj.close(

)字元編碼的問題

f=open(.

..) 是由作業系統開啟檔案,那麼如果我們沒有指定編碼,那麼開啟檔案的預設編碼很明顯是作業系統說了算,作業系統會用自己的預設編碼去開啟檔案,預設情況下,在 windows 下是 gbk,在 linux 下是 utf-

8。若要保證不亂碼,檔案以什麼方式儲存的,就要以什麼方式開啟。

三、 檔案開啟模式

開啟檔案的模式有:

文字方式操作

r 唯讀模式【預設】

w 只寫模式【不可讀;不存在則建立;存在則清空原來的內容再寫新內容;】

a 追加模式【不可讀;不存在則建立;存在則以追加的方式寫入新的內容;】

位元組方式操作

b 表示以位元組的方式操作,不需要編碼的引數 encoding

rb 位元組方式讀取

wb 位元組方式寫入,清空原檔案內容

ab 位元組方式的追加寫入

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

四、檔案操作

3. 讀操作

f_obj =

open

('./a.txt'

,'r'

)# 讀全部

content = f_obj.read(

)print

(content)

# 每次讀一行

line1 = f_obj.readline(

)line2 = f_obj.readline(

)line3 = f_obj.readline(

)# 一次讀完,把每一行的內容放在列表中,成為列表中的乙個元素

line_list = f_obj.readlines()2

. 寫操作

a. 寫普通的文字

f_obj =

open

('a.txt'

,'w'

)# 針對文字模式的寫,需要自己寫換行符

f_obj.write(

'楊哥\n'

)f_obj.write(

'千鋒\n'

)f_obj.close(

)b. 寫 bytes 內容

f_obj =

open

('b.txt'

,'wb'

)# 定義 bytes 內容, 兩種方式都可以

b1 =

bytes

('千鋒\n'

, encoding=

'utf-8'

)b2 =

'楊哥\n'

.encode(

'utf-8'

)# 可以用 writelines() 一次性寫入多行

f_obj.writelines(

[b1, b2]

)f_obj.close()3

. 其他方法和屬性

f.name # 檔名

f.closed # 檔案是否關閉

f.readable(

)# 檔案是否可讀

f.writable(

)# 檔案是否可寫

f.flush(

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

五、with 語句管理上下文

在實際的程式設計中,我們會經常忘記關閉已經開啟的檔案物件,這樣就會導致系統資源的浪費。

with

open

('f1.txt'

,'r'

, encoding=

'utf-8'

)as f:

content = f.read(

)print

(content)

print

('此時檔案已經自動關閉了'

)使用 with 語句來管理上下文 ,操作之後,python 內部會自動關閉並釋放檔案資源。

六、檔案的修改

檔案的資料是存放於硬碟上的,因而只存在覆蓋、不存在修改這麼一說,我們平時看到的修改檔案,都是模擬出來的效果。

就是先把要修改的檔案內容讀取到記憶體中,在記憶體中修改;

之後再把修改好的內容先存到乙個臨時的檔案中;

最後把原來的檔案刪除,再把臨時的檔案的檔名修改為原來檔案的檔名。

流程解析

「」"把原始檔內容 讀到記憶體中

在記憶體中修改檔案的內容

把修改好的檔案內容存到另外乙個臨時的檔案中

把原檔案刪除

把臨時檔案的檔名修改為 原檔案的檔名

# 1. 把原始檔內容 讀到記憶體中

with

open

('a.txt'

,'r'

, encoding=

'utf-8'

)as rf,

open

('.a.txt.swap'

,'w'

, encoding=

'utf-8'

)as wf:

content = rf.read(

)# 2. 在記憶體中修改檔案的內容

new_content = content.replace(

'你好'

,'world'

)# 3. 把修改好的檔案內容存到另外乙個臨時的檔案中

wf.write(new_content)

# 4. 把原檔案刪除

import os

os.remove(

'a.txt'

)# 5. 把臨時檔案的檔名修改為 原檔案的檔名

os.rename(

'.a.txt.swap'

,'a.txt'

)python 中,具體的說有兩種實現方式:

注意自己操作的檔案的路徑、許可權、當初用什麼編碼寫入的。比如你是在 windows 系統下建立並寫入的檔案,字元編碼預設是 gbk。

方式一:將硬碟存放的該檔案的內容全部載入到記憶體,進行修改。

import os

with

open

('a.txt'

,'r'

, encoding=

'utf-8'

)as read_f,

open

('.a.txt.swap'

,'w'

, encoding=

'utf-8'

)as write_f:

r_data=read_f.read(

)# 全部讀入記憶體,如果檔案很大,會很卡

w_data=r_data.replace(

'千鋒'

,'千鋒教育'

)# 在記憶體中完成修改

write_f.write(w_data)

# 一次性寫入新檔案

os.remove(

'a.txt'

)os.rename(

'.a.txt.swap'

,'a.txt'

)

方式二:將硬碟存放的該檔案的內容讀一行,改一行,存一行。

import os

with

open

('a.txt'

,'r'

, encoding=

'utf-8'

)as read_f,

open

('.a.txt.swap'

,'w'

, encoding=

'utf-8'

)as write_f:

for line in read_f:

line=line.replace(

'楊哥'

,'yangge'

) write_f.write(line)

os.remove(

'a.txt'

)os.rename(

'.a.txt.swap'

,'a.txt'

)

Python 操作檔案

字元 含義 r 以唯讀方式開啟 預設 w 以只寫方式開啟,刪除原有檔案內容 如果檔案不存在,則建立該檔案並以只寫方式開啟 x 建立乙個新檔案,並以寫模式開啟這個檔案,如果檔案存在則會產生 fileexistserror 錯誤 a 以只寫檔案開啟乙個檔案,如果有原檔案則追加到檔案末尾 b 用二進位制模...

Python 操作檔案

今天,我們來學習python開啟,修改檔案的方法。先在專案資料夾下新建兩個檔案 text1.txt和text2.txt,在text2中寫入 i like python.換行 it is fun.換行 下面我們用這兩個檔案探索操作檔案的方法。如何在python中開啟乙個檔案物件呢?with open ...

Python操作檔案

python 的 open 方法用於開啟乙個檔案,該方法返回乙個檔案物件,在對檔案進行處理過程都需要使用到這個函式,如果該檔案無法被開啟,會丟擲 oserror。注意 使用 open 方法後一定要保證關閉檔案物件,即呼叫 close 方法。open 函式常用形式是接收兩個引數 檔案路徑 file 和...