溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中如何對文件進行操作

發(fā)布時間:2021-05-31 09:49:35 來源:億速云 閱讀:209 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹python中如何對文件進行操作,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一.文件基本操作

1.1 文件打開和關(guān)閉

  1. open(‘文件名稱','打開模式')

  2. 模式:r(只讀,指針再頭) w(只寫,存在覆蓋,不存創(chuàng)新) a(追加) b(二進制格式)

  3. close() 方法關(guān)閉文件

f=open('text.txt','w')#創(chuàng)建text.txt文件,用f來指代
f.close()#關(guān)閉文件

注意: 打開一個文件之后,一定要關(guān)閉,否則后面無法繼續(xù)操作這個文件

with 上下文管理,不管在處理文件過程中是否發(fā)生異常,都能保證 with 語句執(zhí)行完畢后已經(jīng)關(guān)閉打開的文件句柄。

def main():
    with open('text.txt','w+') as f:
        content=f.read()#讀取文件寫入內(nèi)容
        print(content)#輸出
main()#輸出完成后會自動關(guān)閉文件

錯誤:如果報錯io.UnsupportedOperation: not readable

因為你是用open打開一個文件,此時調(diào)用的是w寫入模式,下面使用read是沒有權(quán)限的,你得使用w+讀寫模式

python中如何對文件進行操作

1.2 讀/寫文件

1.2.1 寫文件

寫文件 write默認的編碼是gbk 這個是中文編碼,最好的習(xí)慣呢就是我們再打開一個文件的時候給它指定一個編碼類型encoding,要不然會出現(xiàn)亂碼

f=open('text.txt','w',encoding='utf-8')#w為寫入模式
f.write('人生苦短,我用python')#寫入文件text.txt
f.close()

#writelines()可傳一個可迭代對象
f=open('text.txt','a',encoding='utf-8')#a為追加模式

他會自動生成text文件然后寫入

python中如何對文件進行操作

writelines 方法將可迭代對象,迭代寫入文件

f.write('\r\n')
f.writelines(['人生','就是','不斷的學(xué)習(xí)'])
print('\n')
f.close()

python中如何對文件進行操作

1.2.2 讀文件

 read(num):傳入一個數(shù)字做參數(shù),表示讀取指定字符個數(shù)。列:read(1)
readlines() :按行讀取,一次性讀取所有內(nèi)容,返回一個列表,每一行內(nèi)容作為一個元素。
readline() :按行讀取,但是一次只讀取一行。

#讀取文件
f=open('text.txt','r',encoding='utf-8')#只讀模式
print(f.read())#全部讀取輸出
f.close()

注意:出現(xiàn)UnicodeDecodeError: ‘gbk' codec can't decode byte 0xad in position 52: illegal multibyte sequence錯誤

解決:open中加入encoding=‘utf-8'就行

二. 文件備份腳本

利用腳本完成自動備份,要求用戶輸入文件名稱,完成自動備份

def copyfile():
    #接收輸入的文件
    old_file=input('請輸入要備份的文件:')
    file_list=old_file.split(".")#split()函數(shù)通過指定分隔符對字符串進行切片,假設(shè)要備份text.txt文件,輸出是['text', 'txt']
    new_file=file_list[0]+'_備份.'+file_list[1]#構(gòu)造新的文件名,加上備份后綴
    old_f=open(old_file,'r')#只讀模式打開備份的文件
    new_f=open(new_file,'w')#只寫模式打開新文件,不存在則創(chuàng)建
    new_f.write(old_f.read())#將備份文件內(nèi)容讀取出來寫入新文件
    #關(guān)閉所有打開文件
    old_f.close()
    new_f.close()
copyfile()#到時候文件夾里面會出現(xiàn)一個text_備份.txt的文件,內(nèi)容和備份文件一樣

python中如何對文件進行操作

如果處理超大文件,一次將全部內(nèi)容讀取出來顯然是不合適的,在上面代碼的基礎(chǔ)上改進下代碼,讓它備份大文件也不會導(dǎo)致內(nèi)存被占滿。

def copyfile2():
    #接收輸入的文件
    old_file=input('輸入要備份的文件')
    #如果沒有輸入或者輸入錯誤就提示
    if not old_file:
        print('輸入錯誤')
        old_file = input('輸入要備份的文件:')
    else:
         file_list=old_file.split(".")
         print(file_list)
    #創(chuàng)造新的文件名,加上備份后綴
    if len(file_list)<2:#如果列表長度小于2,就不用加.
        new_file=file_list[0]+'_備份2'
        pass
    else:#文件有后綴的情況
        new_file=file_list[0]+'_備份2.'+file_list[1]
    #用異常處理判斷內(nèi)存是否被占滿
    try:
        #同時打開需要備份的文件,新文件
        with open(old_file,'r') as old_f, open(new_file,'a')  as  new_f:
            while True:
                content=old_f.read(2048)#一次讀取2048個字符
                new_f.write(content)#寫入
                #當(dāng)讀取的內(nèi)容字符長度小于2048是說明讀取完畢
                if len(content)<2048:
                    break#跳出循環(huán)
    except Exception as e:
        print(e)#如果內(nèi)存滿無法讀取了,就拋出異常
copyfile2()#到時候文件夾里面會出現(xiàn)一個text_備份2.txt的文件,內(nèi)容和備份文件一樣

備份了text.txt

python中如何對文件進行操作

以上是“python中如何對文件進行操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI