我有一個列表中的文件對象名爲paths
如何在python中並行迭代任意數量的文件?
我希望能夠通過並閱讀每個文件的第一行,用這個n元組數據做些事情,然後繼續前進每個文件的第二行。 path
中的文件對象數是任意的。
這可能嗎?
我有一個列表中的文件對象名爲paths
如何在python中並行迭代任意數量的文件?
我希望能夠通過並閱讀每個文件的第一行,用這個n元組數據做些事情,然後繼續前進每個文件的第二行。 path
中的文件對象數是任意的。
這可能嗎?
import itertools
for line_tuple in itertools.izip(*files):
whatever()
我會使用zip
,但它會將文件的全部內容讀入內存。請注意,files
應該是文件對象的列表;我不確定你的意思是「文件處理程序列表」。
這取決於它實際上是多麼「任意」。只要該數字小於您的操作系統的限制,那麼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()
如果你可以有更多的文件比你的操作系統將允許你打開,那麼你的運氣了(至少就作爲一個簡單的解決方案而言)。
python3.x兼容性說明:'itertools.izip' - >'zip'和'itertools.izip_longest' - >'itertools.zip_longest'。 – mgilson
第一個想法彈入我的腦海下面的代碼,它似乎過於直白
我的意思是像你說的說「文件描述符」或「文件對象」。我編輯了我的原始文件,並將「文件處理程序」更改爲「文件對象」。謝謝! – supernun