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 ~]#