fileinput模塊提供處理一個或多個文本文件的功能,可以通過使用for循環來讀取一個或多個文本文件的所有行。它的工作方式和readlines很類似,不同點在于它不是將全部的行讀到列表中而是創建了一個xreadlines對象。
下面是fileinput模塊中的常用函數:
input() #返回能夠用于for循環遍歷的對象 filename() #返回當前文件的名稱 lineno() #返回當前已經讀取的行的數量(或者序號) filelineno() #返回當前讀取的行的行號 isfirstline() #檢查當前行是否是文件的第一行
創建測試文件test.txt:
# cat > test.txt << EOF
Hello,
Python
www.jb51.net
This is a test file
EOF
利用fileinput實現文件內容替換,如:file_input.p( 注意文件名,別寫成fileinput.py )
#!/usr/bin/env python import fileinput for line in fileinput.input('test.txt',backup='_bak',inplace=1): print line.replace('Python','LinuxEye'), fileinput.close()
inplace=1:標準輸出會被重定向到打開文件;backup='_bak',:替換文件內容之前備份后綴以_bak結尾;另外,在調用fileinput.input()之后記得要fileinput.close()。
執行結果如下:
# python file_input.py #執行file_input.py # ls test.txt* test.txt test.txt_bak # cat test.txt Hello,LinuxEye www.jb51.net This is a test file # cat test.txt_bak Hello,Python www.jb51.net This is a test file
其他測試:
>>> import fileinput >>> for line in fileinput.input('test.txt'): ... print fileinput.filename(),fileinput.lineno(),fileinput.filelineno() ... test.txt 1 1 test.txt 2 2 test.txt 3 3
>>> import fileinput >>> for line in fileinput.input('test.txt'): ... if fileinput.isfirstline(): ... print line, ... else: ... break ... Hello,LinuxEye
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
