做者博文地址:http://www.cnblogs.com/liu-shuai/python
fileinput模塊提供處理一個或多個文本文件的功能,能夠經過使用for循環來讀取一個或多個文本文件的全部行。
app
【默認格式】
fileinput.input (files='filename', inplace=False, backup='', bufsize=0, mode='r', openhook=None)函數
1 files: #文件的路徑列表,默認是stdin方式,多文件['1.txt','2.txt',...] 2 inplace: #是否將標準輸出的結果寫回文件,默認不取代 3 backup: #備份文件的擴展名,只指定擴展名,如.bak。若是該文件的備份文件已存在,則會自動覆蓋。 4 bufsize: #緩衝區大小,默認爲0,若是文件很大,能夠修改此參數,通常默認便可 5 mode: #讀寫模式,默認爲只讀 6 openhook: #該鉤子用於控制打開的全部文件,好比說編碼方式等;
【經常使用函數】ui
1 fileinput.input() #返回可以用於for循環遍歷的對象 2 fileinput.filename() #返回當前文件的名稱 3 fileinput.lineno() #返回當前已經讀取的行的數量(或者序號) 4 fileinput.filelineno() #返回當前讀取的行的行號 5 fileinput.isfirstline() #檢查當前行是不是文件的第一行 6 fileinput.isstdin() #判斷最後一行是否從stdin中讀取 7 fileinput.close() #關閉隊列
【使用實例】編碼
一、使用fileinput查看文件全部行
1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 print line, 12 ####################################################
13 #執行代碼 14 #python f_replace.py 15 #輸出結果 16 Jack 17 Rain 18 Tom 19 Suse
二、使用fileinput修改文件並備份原文件
1 #ls ./
2 user.txt
3 #cat user.txt 4 Jack 5 Rain 6 Tom 7 Suse 8 #################################################### 9 #cat f_replace.py 10 #!/usr/bin/env python 11 import fileinput 12 for line in fileinput.input('user.txt',backup='.bak',inplace=1): 13 line = line.replace('Rain','Jerry') 14 print line, 15 #################################################### 16 #執行代碼
17 #python f_replace.py 18 #輸出結果
19 #ls ./
20 user.txt user.txt.bak
21 #cat user.txt 22 Jack 23 Jerry 24 Tom 25 Suse
四、使用fileinput輸出當前行號和行內容
1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 lineno = fileinput.lineno() 12 print lineno,line, 13 #################################################### 14 #執行代碼 15 #python f_replace.py 16 #輸出結果 17 1 Jack 18 2 Rain 19 3 Tom 20 4 Suse
五、使用fileinput判斷是否爲第一行
1 #cat user.txt 2 Jack 3 Rain 4 Tom 5 Suse 6 #################################################### 7 #cat f_replace.py 8 #!/usr/bin/env python 9 import fileinput 10 for line in fileinput.input('user.txt'): 11 if fileinput.isfirstline(): 12 print line, 13 break 14 #################################################### 15 #執行代碼 16 #python f_replace.py 17 #輸出結果 18 Jack
六、使用fileinput過濾系統文件message
1 #!/user/bin/env python 2 #coding=UTF8 3 4 import os 5 import fileinput 6 import re 7 from sys import exit 8 logfiles = os.listdir("/var/log/") 9 pattern="messages-*\d*" 10 msgfiles=[] 11 for log in logfiles: 12 if re.match(pattern,log): 13 print log 14 msgfiles.append("/var/log/"+log) 15 print(msgfiles) 16 while True: 17 find_str = raw_input("please input search key word:") 18 find_str = find_str.strip() 19 print(find_str) 20 if find_str =='': 21 continue 22 elif find_str.lower() =="q" or find_str.lower() =="quit": 23 print('bye bye!') 24 exit(0) 25 else: 26 for line in fileinput.input(msgfiles): 27 if find_str in line: 28 print("filename:%s \nfileline:%s\ncontent:%s" %(fileinput.filename(),fileinput.filelineno(),line))