天天看點

python标準庫學習3-fileinput

  fileinput子產品讓你輕松周遊文本檔案的所有行,與readlines()不同的是fileinput子產品是逐行進行周遊,而readlines是一次讀取全部到記憶體中. 使用python script.py file1.txt file2.txt ...基本使用方法如下:

import fileinput                  for line in fileinput.input():              process(line)           

fileinput中重要的函數: 1.input(files[,inplace,[backup]]):周遊多個輸入的檔案.inplace設定為True的時候直接在源檔案中修改,backup參數将檔案名擴充到通過原始檔案建立的備份檔案中,input=1類似于sed -i參數 2.filename():傳回目前檔案的名稱 3.lineno():傳回目前累計的行數 4.filelineno():傳回目前檔案的行數 5.isfirstline():檢查目前行是否是檔案的第一行 6.isstdin():檢查最後一行是否來至sys.stdin 7.nextfile():關閉目前檔案,移動到下一個檔案,這在逐個檔案進行處理的時候可能很有用 8.close():關閉序列 下面這個是書上的例子,在檔案每一行的末尾添加一個#行号

[[email protected] ~]# cat 1.py              #!/usr/bin/env python              import fileinput              import os                  for line in fileinput.input(inplace=1,backup='.bak'):              line=line.rstrip()              num=fileinput.lineno()              print '%-80s # %2i' % (line,num)           

解釋一下,inplace=1說明直接在源檔案進行修改,backup='.bak'說明在修改之前會将源檔案備份,檔案名我源檔案名.bak line.rstrip()是将每行的末尾的空格删除 fileinput.lineno()是記錄目前處理的行 %-80s的意思是左對齊,寬度為80,如果行的長度不滿80則最後以空格填充,如果滿80則傳回全部資料 %2i的意思是寬度為2的整形 下面是具體的處理結果:

[[email protected] ~]# cat 1.txt              Traceback (most recent call last):              File "./1.py", line 10, in <module>              print a[i]                                    IndexError: list index out of range                   [[email protected] ~]# ./1.py 1.txt              [[email protected] ~]# cat 1.txt              Traceback (most recent call last):                                               #  1              File "./1.py", line 10, in <module>                                            #  2              print a[i]                                                                   #  3              IndexError: list index out of range                                              #  4                  [[email protected] ~]# ls 1.txt*              1.txt      1.txt.bak                [[email protected] ~]# cat 1.txt.bak              Traceback (most recent call last):              File "./1.py", line 10, in <module>              print a[i]                                    IndexError: list index out of range