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)行讀寫操作。
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é)果寫回文件,默認(rèn)不取代 backup: # 備份文件的擴(kuò)展名,只指定擴(kuò)展名,如.bak。如果該文件的備份文件已存在,則會(huì)自動(dòng)覆蓋。 bufsize: # 緩沖區(qū)大小,默認(rèn)為0,如果文件很大,可以修改此參數(shù),一般默認(rèn)即可 mode: # 讀寫模式,默認(rèn)為只讀 openhook: # 該鉤子用于控制打開的所有文件,比如說(shuō)編碼方式等;
三、fileinput中的常用函數(shù)
| 函數(shù) | 描述 |
| input([files[, inplace[, backup]]]) | 幫助迭代多個(gè)輸入流中的行 |
| filename() | 返回當(dā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è)置為True(inplace=True),對(duì)于你訪問(wèn)的每一行,都需打印出替代內(nèi)容,這些內(nèi)容將被寫回到當(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ù),都是類似的使用方法,這里就不全部介紹了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python實(shí)現(xiàn)智能停車場(chǎng)車牌識(shí)別計(jì)費(fèi)系統(tǒng)
這篇文章主要為大家介紹了如何利用Python實(shí)現(xiàn)一個(gè)智能停車場(chǎng)車牌識(shí)別計(jì)費(fèi)系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-04-04
Python腳本實(shí)現(xiàn)定時(shí)任務(wù)的最佳方法
我們?cè)谌粘9ぷ髦?常常會(huì)用到需要周期性執(zhí)行的任務(wù),下面這篇文章主要給大家介紹了關(guān)于Python腳本實(shí)現(xiàn)定時(shí)任務(wù)的最佳方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Python中實(shí)現(xiàn)列表的逆序、復(fù)制與清除的幾種常見方法
本文介紹了Python中列表的逆序、復(fù)制和清除操作,通過(guò)reverse()方法、切片、copy()方法和clear()方法,我們可以輕松地對(duì)列表進(jìn)行這些操作2024-12-12
教你用Python為二年級(jí)的學(xué)生批量生成數(shù)學(xué)題
這兩天在學(xué)習(xí)pthon,正好遇到老師布置的暑假作業(yè),需要家長(zhǎng)給還在出試卷,下面這篇文章主要給大家介紹了關(guān)于如何用Python為二年級(jí)的學(xué)生批量生成數(shù)學(xué)題的相關(guān)資料,需要的朋友可以參考下2023-02-02
Python?pomegranate庫(kù)實(shí)現(xiàn)基于貝葉斯網(wǎng)絡(luò)拼寫檢查器
這篇文章主要為大家介紹了Python?pomegranate庫(kù)實(shí)現(xiàn)基于貝葉斯網(wǎng)絡(luò)拼寫檢查器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-04-04

