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