python模塊fileinput
在python腳本語言中的fileinput模塊可以對一個或多個文件的內容進行迭代,編歷操作. 常用的函數: fileinput.input() #讀取文件的內容 fileinput.filename() #文件的名稱 fileinput.lineno() #當前讀取行的數量 fileinput.filelineno() #讀取行的行號 fileinput.isfirstline() #當前行是否是文件第一行 fileinput.isstdin() #判斷最後一行是否從stdin中讀取 fileinput.close() #關閉隊列 1.加載fileinput模塊和使用input屬性 格式: input(files=None, inplace=0, backup='', bufsize=0, mode='r', openhook=None) files:文件的路徑列表,默認是stdin方式,多文件['1.txt','2.txt']寫成列表 inplace:是否將標準輸出的結果寫迴文件 backup:備份文件的擴展名,只定義擴展名 bufsize:緩衝區的大小,默認是0 mode:讀寫模式,默認為只讀 openhook:控制打開的文件 2.備份文件內容 [root@node1 ~]# vim 1.py #!/bin/env python #! _*_ coding:utf8 _* import fileinput for line in fileinput.input('qwe.py','/root/1.txt','.back'): #.back是備份後文件的後綴 print line, #後面逗號表示不換行 [root@node1 ~]# python 1.py qwe.py [root@node1 ~]# ll qwe.py* -rwxr-xr-x 1 root root 315 Jun 21 18:10 qwe.py -rwxr-xr-x 1 root root 315 Jun 21 18:07 qwe.py.back [root@node1 ~]# 3.格式化輸出 [root@node1 ~]# vim 1.py #!/bin/env python #! _*_ coding:utf8 _* import fileinput for i in fileinput.input(): print fileinput.filename(),'|','Line Number:','|',fileinput.lineno(),'|:',i.lstrip(), [root@node1 ~]# python 1.py qwe.py qwe.py | Line Number: | 1 |: #!/bin/env python qwe.py | Line Number: | 2 |: #!-*- coding:UTF-8 -*- qwe.py | Line Number: | 3 |: qwe.py | Line Number: | 4 |: def lines(file): qwe.py | Line Number: | 5 |: for line for file: qwe.py | Line Number: | 6 |: yield line qwe.py | Line Number: | 7 |: yield 'n' qwe.py | Line Number: | 8 |: qwe.py | Line Number: | 9 |: def blocks(file): qwe.py | Line Number: | 10 |: blosk=[] qwe.py | Line Number: | 11 |: for line in lines(file): qwe.py | Line Number: | 12 |: if line.strip(): qwe.py | Line Number: | 13 |: block.append(line) qwe.py | Line Number: | 14 |: elif block: qwe.py | Line Number: | 15 |: yield ''.join(block).strip() qwe.py | Line Number: | 16 |: block=[] 4.修改文件內容 [root@node1 ~]# vim 1.py def process(line): return line.rstrip()+' line' for line in fileinput.input(['1.txt','2.txt'],inplace=1): print process(line) [root@node1 ~]# python 1.py 1.txt [root@node1 ~]# cat 1.txt 1111 line 2222 line 3333 line 4444 line [root@node1 ~]# cat 2.txt 777 line 888 line 999 line [root@node1 ~]# 5.查找文件中的內容 [root@node1 ~]# vim 1.py #!/bin/env python #! _*_ coding:utf8 _* import fileinput import sys import re a='d{2}:d{2}:d{2}' for i in fileinput.input('/var/log/yum.log',backup='.back',inplace=1): if re.search(a,i): sys.stdout.write(line) [root@node1 ~]# python 1.py [root@node1 ~]# ll /var/log/yum.log* -rw------- 1 root root 0 Jun 21 18:36 /var/log/yum.log -rw------- 1 root root 640 Jun 3 11:39 /var/log/yum.log.back [root@node1 ~]#