python文件處理fileinput使用方法詳解
這篇文章主要介紹了python文件處理fileinput使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
一、介紹
fileinput模塊可以對一個或多個文件中的內(nèi)容進行迭代、遍歷等操作,我們常用的open函數(shù)是對一個文件進行讀寫操作。
fileinput模塊的input()函數(shù)比open函數(shù)更高效和好用,體現(xiàn)在:
input()函數(shù)生成一個迭代器,保證了在遇到大文件的讀取時不會占用太大的內(nèi)存。
用fileinput對文件進行循環(huán)遍歷,格式化輸出,查找、替換等操作,還能獲取每一行的行號等等,非常方便。
二、fileinput讀取文件函數(shù)input的使用格式
fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)
files: # 文件的路徑列表,默認是stdin方式,多文件['1.txt','2.txt',...] inplace: # 是否將標準輸出的結果寫回文件,默認不取代 backup: # 備份文件的擴展名,只指定擴展名,如.bak。如果該文件的備份文件已存在,則會自動覆蓋。 bufsize: # 緩沖區(qū)大小,默認為0,如果文件很大,可以修改此參數(shù),一般默認即可 mode: # 讀寫模式,默認為只讀 openhook: # 該鉤子用于控制打開的所有文件,比如說編碼方式等;
三、fileinput中的常用函數(shù)
函數(shù) | 描述 |
input([files[, inplace[, backup]]]) | 幫助迭代多個輸入流中的行 |
filename() | 返回當前文件的名稱 |
lineno() | 返回(累計的)當前行號 |
filelineno() | 返回在當前文件中的行號 |
isfirstline() | 檢查當前行是否是文件中的第一行 |
isstdin() | 檢查最后一行是否來自sys.stdin |
nextfile() | 關閉當前文件并移到下一個文件 |
close() | 關閉序列 |
fileinput.input是最重要的函數(shù),它返回一個迭代器對象,如果要處理多個文件,可以向這個函數(shù)提供一個或多個文件名。
還可將參數(shù)inplace設置為True(inplace=True),對于你訪問的每一行,都需打印出替代內(nèi)容,這些內(nèi)容將被寫回到當前輸入文件中,此時可選參數(shù)backup用于給從原始文件創(chuàng)建的備份文件指定擴展名。
四、示例
1、讀取多個文件
# a.txt文件的內(nèi)容 """ 我 是 好 人 """ # b.txt文件的內(nèi)容 """ 他 是 壞 人 """ # 讀取一個文件 for line in fileinput.input("a.txt"): print(line) # 讀取多個文件 for line in fileinput.input(["a.txt", "b.txt"]): print(line)
2、修改文件并備份原文件
# -*_ coding:utf-8 -*- import fileinput for line in fileinput.input("a.txt", backup=".bak", inplace=True): line = line.replace("我", "小明") print(line) # 結果 當前文件夾會生成a.txt.bak文件,內(nèi)容是之前的內(nèi)容, 而a.txt文件已經(jīng)被修改了,把"我"變成了"小明"
3、輸出當前行號和行內(nèi)容
# -*_ coding:utf-8 -*- import fileinput for line in fileinput.input("a.txt"): lineno = fileinput.filelineno() print lineno, line # 結果 1 我 2 是 3 好、 4 人
4、輸出文件名
# -*_ coding:utf-8 -*- import fileinput for line in fileinput.input("a.txt"): # 在第一行前面先輸出文件名 if fileinput.isfirstline(): print fileinput.filename() print line # 結果 a.txt 我 是 好、 人
其他函數(shù),都是類似的使用方法,這里就不全部介紹了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式
這篇文章主要介紹了spyder 在控制臺(console)執(zhí)行python文件,debug python程序方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python實現(xiàn)定時自動關閉的tkinter窗口方法
今天小編就為大家分享一篇Python實現(xiàn)定時自動關閉的tkinter窗口方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02python使用pika庫調(diào)用rabbitmq交換機模式詳解
這篇文章主要介紹了python使用pika庫調(diào)用rabbitmq交換機模式詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-08-08