**資源: lib/fileinput.py
該模組包含乙個幫助類,以及可用於在標準輸入、列表及檔案中快速迴圈寫入的函式。如果你僅僅只是想要讀取或寫入乙個檔案,請參照open()函式。
典型的使用如下:
importfileinput
forlineinfileinput
.input():
process(line)
這會遍歷sys.argv[1:]中列出的檔案的所有行,如果該列表為空,預設值為sys.stdin。如果乙個檔名為』-』,它也將會被sys.stdin替換。如要指定另乙個檔名列表,那麼就將它作為input()的第乙個引數傳入。乙個單獨的檔名也被允許。
所有的檔案都預設以文字模式開啟,但是你可以通過指定被呼叫的input()或fileinput函式的模式引數來改變開啟方法。如果開啟檔案或閱讀檔案中發生了i/o錯誤,將會丟擲oserror。
如果sys.stdin被多次使用,第二次及以後的使用都不會反回行,除非它用於互動用途或者已經明確被復位(即:使用sys.stdin.seek(0))。
空檔案被開啟後將被立刻關閉;它們出現在檔名列表中的唯一時間是最新的檔案被開啟時確認為空。
行總會被返回無損的新航,這意味著檔案的最後一行可能沒有值。
你可以控制檔案如何被開啟,該方法通過提供乙個開放鉤經由openhook引數傳遞給fileinput.input()或fileinput()。這個勾必須是乙個由兩個引數的函式,包括filename和mode,並且返回乙個相應開啟的類檔案物件。兩個常用的鉤早已由該模組提供。
下列的函式為該模組的主要介面:
fileinput.input(files=none, inplace=false, backup=』』, bufsize=0, mode=』r』, openhook=none)
建立乙個fileinput類的例項。該例項被作為該模組函式的全域性狀態,並且它會在迭代過程中被返回後使用。該函式的引數將被傳送給fileinput類的構造器。
fileinput例項可以被在with狀態內作為上下文管理器使用。在下例中,with狀態存在後input將會被關閉,甚至例外發生也會導致:
withfileinput
.input(files=(
'spam.txt'
, 'eggs.txt'
))asf:
forlineinf:
process(line)
下列函式使用由fileinput.input()建立的全域性變數;如果這裡沒有活躍狀態,runtimeerror將會被丟擲。
fileinput.filename()
返回當前被閱讀的檔案的名稱。如果檔案的第一行還沒有被讀取,返回none。
fileinput.fileno()
返回當前檔案的整型檔案描述符。當沒有檔案被開啟時(先於第一行或檔案之間),返回-1。
fileinput.lineno()
返回剛才被閱讀過的行的累計行數。如果在第一行被閱讀之前,返回0。在最後的檔案的最後一行被閱讀後,返回該行的行數。
fileinput.filelineno()
返回當前檔案的行數。在第一行被讀取之前,返回0。在最後的檔案的最後一行被閱讀後,返回該檔案內所包含的行的行數。
fileinput.isfirstline()
如果剛剛被閱讀的行為該檔案的第一行,返回true。否則,返回false。
fileinput.isstdin()
如果最新的行是從sys.stdin中讀取出來的,返回true。否則,返回false。
fileinput.nextfile()
關閉當前檔案,接下來迭代讀取來自於下乙個檔案的第一行;從檔案中讀取出的行不會被累計計數到行計數器內。檔名在下乙個檔案的第一行被讀取之前不會改變。在第一行被讀取之前,該函式不會生效;它不能被用於跳過第乙個檔案。最後乙個檔案的最火一行被讀取之後,該函式也不會生效。
fileinput.close()
關閉序列。
適用由模組提供的序列行為實現的類也可以子類化:
classfileinput.fileinput(files=none, inplace=false, backup=』』, bufsize=0, mode=』r』, openhook=none)
fileinput類被實現;它的方法filename(),fileno(),lineno(),filelineno(),isfirstline(),isstdin(),nextfile()和close()與模組中的同名函式相一致。此外,它由乙個readline()方法可用於返回下乙個輸出行,並且__getitem__()方法實現了序列行為。序列必須嚴格按照順序被訪問;隨機訪問和readline()不能混合使用。
mode可以使你通過將其傳遞給open()實現指定檔案模式。它必須是』r』、』ru』、』u』和』rb』中的乙個。
當給定openhook時,函式必須已被給定兩個引數:filename和mode,並且將返回相應的開啟的類檔案物件。你不能同時使用inplace和openhook。
fileinput例項可以被使用在with狀態的上下文管理器中。在該示例中,with狀態存在後。甚至發生例外時,input將被關閉。
withfileinput(files=(
'spam.txt'
, 'eggs.txt'
))asinput:
process(
input)
可選就地過濾:如果關鍵字引數inplace_true被傳遞給fileinput.input()或fileinput構造器,該檔案被移動到備份檔案內,並且標準輸出指向輸入檔案(如果乙個檔案的同名備份檔案已經存在,已存在的將被靜默取代)。這就使得寫乙個過濾器使得輸入檔案本地重寫成為可能。如果backup引數被給定(典型的是backup=』.』),它指定備份檔案的副檔名,並且備份檔案仍舊保留;預設下,拓展名為』. bak』,並且當輸出檔案被開啟時它將被刪除。當標準輸入為讀取態時,就地過濾不生效。
下列的兩個開放鉤由該模組提供:
fileinput.hook_compressed(filename, mode)
透明的開啟gzip和bzip2(通過副檔名』. gz』和』. bz2』識別)格式的壓縮檔案,通過使用gzip和bz2模組。如果檔名擴充套件不是』. gz』和』. bz2』,檔案將被正常開啟(即,使用open()不帶有任何解壓)。
使用示例:fi = fileinput.fileinput(openhook=fileinput.hook_compressed)
fileinput.hook_encoded(encoding, errors=none)
使用open()開啟每乙個檔案,使用給定的encoding和errors去讀取檔案,返回乙個hook。
使用示例:fi = fileinput.fileinput(openhook=fileinput.hook_encoded("utf-8", "surrogateescape"))
python基礎學習
基本資料型別 學習基於python2.7,ubuntu16.04,python3中有一些不同的特性 在ubuntu終端輸入python,進入互動介面。print hello,world print 是乙個常用函式,輸出字串。在python2中,print還是乙個關鍵字,可以用print hello,...
Python 基礎學習
一 python中的資料結構 容器 list 列表 a 1,2,3,4 用方括號標記 可被修改 a 0 1 tuple 元組 a 4,5,6 用圓括號標記 不可被修改 b 0 4 dictionary 字典 即對映 d set 集合 不重複,無序,不支援索引 s 會自動去重得到 二 函式式程式設計 ...
python基礎學習
從今天起,每天晚上9點更新部落格,成為乙個愛學習的程式工程師。特立此flag,監督自己的學習。python基礎學習分為以下幾章 基礎知識 列表和元組 使用字串 字典條件 迴圈和其他語句 抽象更加抽象 異常魔法方法 屬性和迭代器 自帶電池 模組 檔案和流 圖形使用者介面 資料庫支援 網路程式設計 py...