用 python 處理一個文本時,想要刪除其中中某一行,常規(guī)的思路是先把文件讀入內(nèi)存,在內(nèi)存中修改后再寫入源文件。
但如果要處理一個很大的文本,比如GB級別的文本時,這種方法不僅需要占用很大內(nèi)存,而且一次性讀入內(nèi)存時耗費(fèi)時間,還有可能導(dǎo)致內(nèi)存溢出。
所以,需要用另外一個思路去處理。
我們可以使用 open() 方法把需要修改的文件打開為兩個文件,然后逐行讀入內(nèi)存,找到需要刪除的行時,用后面的行逐一覆蓋。實(shí)現(xiàn)方式見以下代碼。
with open('file.txt', 'r') as old_file: with open('file.txt', 'r+') as new_file: current_line = 0 # 定位到需要刪除的行 while current_line < (del_line - 1): old_file.readline() current_line += 1 # 當(dāng)前光標(biāo)在被刪除行的行首,記錄該位置 seek_point = old_file.tell() # 設(shè)置光標(biāo)位置 new_file.seek(seek_point, 0) # 讀需要刪除的行,光標(biāo)移到下一行行首 old_file.readline() # 被刪除行的下一行讀給 next_line next_line = old_file.readline() # 連續(xù)覆蓋剩余行,后面所有行上移一行 while next_line: new_file.write(next_line) next_line = old_file.readline() # 寫完最后一行后截?cái)辔募驗(yàn)閯h除操作,文件整體少了一行,原文件最后一行需要去掉 new_file.truncate()
以上這篇python 刪除大文件里的某一行(最有效率的方法)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
