python 檔案讀寫,通過讀寫操作備份檔案

2021-10-20 00:21:34 字數 4044 閱讀 1589

用於開啟乙個檔案,建立乙個 file 物件,相關的方法才可以呼叫它進行讀寫。

不同模式開啟檔案的完全列表:

模式描述

t

文字模式 (預設)。

x

寫模式,新建乙個檔案,如果該檔案已存在則會報錯。

b

二進位制模式。

+

開啟乙個檔案進行更新(可讀可寫)。

u

通用換行模式(不推薦)。

r

以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

rb

r+

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

rb+

w

開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

wb

w+

開啟乙個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。

wb+

a

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

ab

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

a+

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

ab+

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

寫操作主要使用w,wb,a,ab

w等同於重定向 >

a等同於追加重定向 >>

wb和ab使用二進位制格式寫入

使用open函式需賦值給乙個file物件,之後操作這個物件進行讀寫操作。

示例:

# 賦值給test檔案物件,之後操作test物件使用w寫入,預設為gbk編碼,使用encoding轉為utf-8

test=open('./test.txt','w',encoding='utf-8')

test.write('hello')

# 同上,wb使用二進位制寫入,使用encode方法轉為utf-8編碼(否則這個world會以str型別寫入引起報錯)

test=open('./test.txt','wb')

test.write('world'.encode('utf-8'))

# 關閉檔案(儲存),如果沒有關閉,檔案物件會一直處於開啟狀態占用記憶體

test.close()

# 執行結果,在當面目錄下開啟test.txt檔案,沒有則建立,使用w寫入test檔案物件hello,下面又使用wb寫入world,直接覆蓋掉了hello

file.writelines() 可傳乙個可迭代物件# 寫模式開啟乙個test.txt 檔案

f = open('test.txt', 'w』)

# writelines 方法將可迭代物件,迭**入檔案

f.writelines(['我','愛','我的','國家'])

f.close() # 關閉檔案

讀操作主要使用r,rb

file.read()的引數可以指定讀取字元數,不指定則預設讀取全部,第一次使用read檔案指標從文字開頭開始,之後檔案指標會被放置在這個地方,同乙個開啟檔案操作內下次使用則從這裡開始。

file.readline()返回一行,引數同read也是指定字元數,那這個引數應該就沒啥用了。

file.readlines()以列表的形式返回文字。

with 語句,不管在處理檔案過程中是否發生異常,都能保證 with 語句執行完畢後已經關閉開啟的檔案控制代碼。

上面提過,使用open()函式開啟檔案後是不會自動關閉的,得使用close函式關閉才會釋放,比較繁瑣,所以使用with...as語句。

語法:

with expression [as variable]: with-block

其中as variable是可選的,也就是定個別名。with-block是需要執行的,不管執行的結果如何最後都會執行__exit__函式,也就是確保了open開啟的檔案會被關閉。

示例:

with open('test.txt','w') as f:

f.write('盛年不重來,\n一日難再晨。\n及時當勉勵,\n歲月不待人。')

old_file = input('請輸入要備份的檔名:')

# split() 指定分隔符對字串進行切片,返回字串列表

file_list = old_file.split(".")

# 構造新的檔名,加上備份字尾

if len(file_list) < 2:

new_file = file_list[0] + '_備份'

else:

new_file = file_list[0] + '_備份.' + file_list[1]

try:

with open(old_file,'r') as old_f,open(new_file,'w') as new_f:

while true:

# 一次讀取1024字元

content=old_f.read(1024)

# 寫入備份檔案

new_f.write(content)

# 最後一次寫入字元小於1024了則整個檔案備份完成退出迴圈

NSFileHandle對檔案進行讀寫操作

nslog 路徑 fullpath nsfilehandle filehandle nsfilehandle filehandleforwritingatpath fullpath filehandle seektoendoffile filehandle writedata log datausi...

Python檔案讀寫

今天在看python檔案讀寫操作,發現python file name mode buffering file 函式用於建立乙個file物件,它有乙個別名叫open 可能更形象一些,它們是內建函式。來看看它的引數。它引數都是以字串的形式傳遞的。name是檔案的名字。mode 是開啟的模式,可選的值為...

python檔案讀寫

檔案讀寫模式 模式 描述 r以讀方式開啟檔案,可讀取檔案資訊。w以寫方式開啟檔案,可向檔案寫入資訊。如檔案存在,則清空該檔案,再寫入新內容 a以追加模式開啟檔案 即一開啟檔案,檔案指標自動移到檔案末尾 如果檔案不存在則建立 r 以讀寫方式開啟檔案,可對檔案進行讀和寫操作。w 消除檔案內容,然後以讀寫...