Python模組學習 —- fileinput

來源:互聯網
上載者:User

    這幾天有這樣一個需求,要將使用者登陸系統的資訊統計出來,做成一個報表。當使用者登陸成功的時候,伺服器會往記錄檔裡寫一條像下面這種格式的記錄:”日期時間@使用者名稱@IP“,這樣的記錄檔第天產生一個。所以,我們只要編曆這些記錄檔,將所有的登陸資訊提取出來,並重新組織資料格式就可以了。用python寫一個分析工具非常簡單,你會說,用glob擷取所有的記錄檔,然後對每個記錄檔都open(logfile),再一行一行的讀取;或者用os.walk,也很簡單。其實,標準庫提供了另一個輔助模組,我們可以非常方便的完成這個工作,那就是fileinput。下面我們就通過fileinput來編曆所有的D盤下的文字檔,將每一行的長度列印出來:

import fileinputfrom glob import globfor line in fileinput.input(glob(r'd:/*.txt')):    print fileinput.lineno(), u'檔案:', fileinput.filename(), /            u'行號:', fileinput.filelineno(), u'長度:', len(line.strip('/n'))fileinput.close()

    代碼非常簡單明了。input()接受要編曆的所有檔案路徑的列表,通過filename()返回當前正在讀取的檔案的檔案名稱,filelineno()返回當前讀取的行的行號,而lineno()返回當前已經讀取的行的數量(或者序號)。其實,模組內部通過FileInput類來實現檔案的編曆讀取,input()在內部建立了該類的一個對象,當處理完資料行之後,通過fileinput.close()來關閉這個內部對象。

    模組非常簡單,詳細的內容可以參數標準庫手冊。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.