python 刪除文件首行或指定行(修改文件)

網上的大多數答案也是,讀入,寫入的過程,總結如下

python修改文件(fileinput) 鏈接 https://blog.csdn.net/u013398398/article/details/53583596

上網查了好多方法都是將文件一行一行都進來,然後新開一個文件指針,將文件再一行行寫進新文件裏。 
感覺不是太好,看到這個fileinput的庫,發現大同小異,不過有一點就是可以在原文件上修改,不用新開文件。

Python Fileinput 模塊介紹(轉)

作者博文地址:https://www.cnblogs.com/liu-shuai/p/6098302.html

fileinput模塊提供處理一個或多個文本文件的功能,可以通過使用for循環來讀取一個或多個文本文件的所有行。

fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)

1 files:         #文件的路徑列表,默認是stdin方式,多文件['1.txt','2.txt',...]
2 inplace:       #是否將標準輸出的結果寫回文件,默認爲0不返回,設置爲1時返回
3 backup:        #備份文件的擴展名,只指定擴展名,如.bak。如果該文件的備份文件已存在,則會自動覆蓋。
4 bufsize:       #緩衝區大小,默認爲0,如果文件很大,可以修改此參數,一般默認即可
5 mode:      #讀寫模式,默認爲只讀
6 openhook:    #該鉤子用於控制打開的所有文件,比如說編碼方式等; 

常用函數

fileinput.input()       #返回能夠用於for循環遍歷的對象
fileinput.filename()    #返回當前文件的名稱
fileinput.lineno()      #返回當前已經讀取的行的數量(或者序號)
fileinput.filelineno()  #返回當前讀取的行的行號
fileinput.isfirstline() #檢查當前行是否是文件的第一行
fileinput.isstdin()     #判斷最後一行是否從stdin中讀取
fileinput.close()       #關閉隊列

參考,https://zhidao.baidu.com/question/583049390.html

法一:這個方法每次會在原文件刪除第一行,不會在屏幕打印信息

import fileinput
for line in fileinput.input("E:\Mypython3\wenshu_my\data_my\other\\test.txt", inplace=1):
    if not fileinput.isfirstline():
        print(line.replace('\n',''))

法二:利用行的index

with open('in.txt') as fp_in:
with open('out.txt', 'w') as fp_out:
fp_out.writelines(line for i, line in enumerate(fp_in) if i != 10)

法三:整體讀入,整體寫入

fin=open('a.txt')

a=fin.readlines()

fout=open('newa.txt','w')

b=''.join(a[1:])

fout.write(b)

fin.close()

fout.close()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章