Python 檔案操作

2021-10-03 17:46:51 字數 3733 閱讀 2465

四、檔案的拷貝

# 第一種方式/異常退出時檔案無法關閉

file

=open

('test.txt'

,'rw'

)file

.close(

)# 第二種方式/使用finally最終執行close()

try:

file

=open

('test.txt'

,'rw'

)except filenotfounderror:

print

('檔案未找到'

)finally

:file

.close(

)# 第三種方式/使用with....as,當檔案執行或者出錯時退出,檔案最後執行close()

with

open

('youbian1.txt'

,'r'

, encoding=

'utf8')as

file

:# 執行的方法

pass

讀寫各類的各種方式及對應的功能:

單一方法

r: 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。如果檔案不存在,則報錯。這是預設模式。

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

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

rb:以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。

wb:以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

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

讀寫方法

r+:開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

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

a+:開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

rb+:以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

wb+:以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

ab+:以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

整體來說有+號的就是讀寫,有b的是二進位制,r是從頭,a是從最後,w是覆蓋或建立

讀:

import json

you_list =

with

open

('youbian1.txt'

,'r'

, encoding=

'utf8')as

file

:while

true

:# content = file.read() 讀取乙個

# 讀取一行

content =

file

.readline(

).strip(

',\n'

)# content = file.readlines().strip(',\n') 按行讀取所有

ifnot content:

break

x = json.loads(content)

print

(you_list)

寫:

# 序列化

import json

you_dict =

# encoding:編碼方式,

with

open

('./test.txt(檔案位址)'

,'a(寫入方式)'

,encoding=

'utf-8'

)as fp:

# ensure_ascii=false:如果資料中有中文,可以使資料存入文字中後保持中文狀態。

fp.write(json.dumps(you_dict,ensure_ascii=

false

))

上述**中的readline方法與readlines有區別,當資料可以直接匯入用是,可以直接用readlines讀取後使用json的反序列化load、loads將字串改為物件

python中提供了stringio和bytesio這兩個類將字串資料和二進位制資料寫入到記憶體裡。

from io import stringio

# 建立乙個stringio物件

f = stringio(

)# 可以像操作檔案一下,將字串寫入到記憶體中

f.write(

'hello\r\n'

)f.write(

'good'

)# 使用檔案的 readline和readlines方法,無法讀取到資料

# print(f.readline())

# print(f.readlines())

# 需要呼叫getvalue()方法才能獲取到寫入到記憶體中的資料

print

(f.getvalue())

f.close(

)

from io import bytesio

f = bytesio(

)f.write(

'你好\r\n'

.encode(

'utf-8'))

f.write(

'中國'

.encode(

'utf-8'))

print

(f.getvalue())

f.close(

)

bytesio使用二進位制存入記憶體

# 提示輸入檔案

file_name =

input

("請輸入要拷貝的檔案名字:"

)# 以讀的方式開啟檔案

old_file =

open

(file_name,

'rb'

)# 分割檔名和字尾名

file_names =file_name.rsplit(

'.', maxsplit=1)

# 組織新的檔案名字

new_file_name = file_names[0]

+'.bak.'

+file_names[1]

# 建立新檔案

newfile =

open

(new_file_name,

'wb'

)# 把舊檔案中的資料,一行一行的進行複製到新檔案中

for linecontent in old_file.readlines():

newfile.write(linecontent)

# 關閉檔案

old_file.close(

)newfile.close(

)

後續拓展,上面的需要更詳細,可以再加個csv檔案操作…

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