2014-01-21 81 views

回答

4
import itertools 
for line_tuple in itertools.izip(*files): 
    whatever() 

我會使用zip,但它會將文件的全部內容讀入內存。請注意,files應該是文件對象的列表;我不確定你的意思是「文件處理程序列表」。

+0

我的意思是像你說的說「文件描述符」或「文件對象」。我編輯了我的原始文件,並將「文件處理程序」更改爲「文件對象」。謝謝! – supernun

4

這取決於它實際上是多麼「任意」。只要該數字小於您的操作系統的限制,那麼itertools.izip應該可以正常工作(或適當的話可以是itertools.izip_longest)。

files = [open(f) for f in filenames] 
for lines in itertools.izip(*files): 
    # do something 

for f in files: 
    f.close() 

如果你可以有更多的文件比你的操作系統將允許你打開,那麼你的運氣了(至少就作爲一個簡單的解決方案而言)。

+1

python3.x兼容性說明:'itertools.izip' - >'zip'和'itertools.izip_longest' - >'itertools.zip_longest'。 – mgilson

0

第一個想法彈入我的腦海下面的代碼,它似乎過於直白

相關問題