您好,登錄后才能下訂單哦!
這篇文章主要介紹了python文件處理fileinput使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
一、介紹
fileinput模塊可以對一個或多個文件中的內容進行迭代、遍歷等操作,我們常用的open函數是對一個文件進行讀寫操作。
fileinput模塊的input()函數比open函數更高效和好用,體現在:
input()函數生成一個迭代器,保證了在遇到大文件的讀取時不會占用太大的內存。
用fileinput對文件進行循環遍歷,格式化輸出,查找、替換等操作,還能獲取每一行的行號等等,非常方便。
二、fileinput讀取文件函數input的使用格式
fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)
files: # 文件的路徑列表,默認是stdin方式,多文件['1.txt','2.txt',...] inplace: # 是否將標準輸出的結果寫回文件,默認不取代 backup: # 備份文件的擴展名,只指定擴展名,如.bak。如果該文件的備份文件已存在,則會自動覆蓋。 bufsize: # 緩沖區大小,默認為0,如果文件很大,可以修改此參數,一般默認即可 mode: # 讀寫模式,默認為只讀 openhook: # 該鉤子用于控制打開的所有文件,比如說編碼方式等;
三、fileinput中的常用函數
函數 | 描述 |
input([files[, inplace[, backup]]]) | 幫助迭代多個輸入流中的行 |
filename() | 返回當前文件的名稱 |
lineno() | 返回(累計的)當前行號 |
filelineno() | 返回在當前文件中的行號 |
isfirstline() | 檢查當前行是否是文件中的第一行 |
isstdin() | 檢查最后一行是否來自sys.stdin |
nextfile() | 關閉當前文件并移到下一個文件 |
close() | 關閉序列 |
fileinput.input是最重要的函數,它返回一個迭代器對象,如果要處理多個文件,可以向這個函數提供一個或多個文件名。
還可將參數inplace設置為True(inplace=True),對于你訪問的每一行,都需打印出替代內容,這些內容將被寫回到當前輸入文件中,此時可選參數backup用于給從原始文件創建的備份文件指定擴展名。
四、示例
1、讀取多個文件
# a.txt文件的內容 """ 我 是 好 人 """ # b.txt文件的內容 """ 他 是 壞 人 """ # 讀取一個文件 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文件,內容是之前的內容, 而a.txt文件已經被修改了,把"我"變成了"小明"
3、輸出當前行號和行內容
# -*_ 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 我 是 好、 人
其他函數,都是類似的使用方法,這里就不全部介紹了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。