四、檔案的拷貝
# 第一種方式/異常退出時檔案無法關閉
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後面加上...