Python fileinput模組使用介紹

來源:互聯網
上載者:User
fileinput模組提供處理一個或多個文字檔的功能,可以通過使用for迴圈來讀取一個或多個文字檔的所有行。它的工作方式和readlines很類似,不同點在於它不是將全部的行讀到列表中而是建立了一個xreadlines對象。

下面是fileinput模組中的常用函數:

input()    #返回能夠用於for迴圈遍曆的對象filename()  #返回當前檔案的名稱lineno()   #返回當前已經讀取的行的數量(或者序號)filelineno() #返回當前讀取的行的行號isfirstline() #檢查當前行是否是檔案的第一行

建立測試檔案test.txt:

# cat > test.txt << EOFHello,Pythonwww.jb51.netThis is a test fileEOF

利用fileinput實現檔案內容替換,如:file_input.p(注意檔案名稱,別寫成fileinput.py)

#!/usr/bin/env pythonimport fileinputfor 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.txtHello,LinuxEyewww.jb51.netThis is a test file # cat test.txt_bakHello,Pythonwww.jb51.netThis is a test file

其他測試:

>>> import fileinput>>> for line in fileinput.input('test.txt'):...   print fileinput.filename(),fileinput.lineno(),fileinput.filelineno()...test.txt 1 1test.txt 2 2test.txt 3 3
>>> import fileinput>>> for line in fileinput.input('test.txt'):...   if fileinput.isfirstline():...     print line,...   else:...     break...Hello,LinuxEye
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.