我有兩個文件:一個頭文件和正文。我是使用庫來讀取整個事情。我可以使用「fileinput.input」創建一個FileInput對象,並將其傳遞給讀取數據的庫。問題是FileInput對象沒有一個'.read'屬性,這個庫似乎是期望的。python:打開兩個文件作爲一個文件對象
我需要一個帶有.read的FileObject,就像將兩個文件一起讀取一樣。
任何想法現有的解決方法?是的,我知道我可以一起建立自己的小班或貓文件。只是想知道是否有一些我從未聽說過的神奇的FileObject木匠。
我有兩個文件:一個頭文件和正文。我是使用庫來讀取整個事情。我可以使用「fileinput.input」創建一個FileInput對象,並將其傳遞給讀取數據的庫。問題是FileInput對象沒有一個'.read'屬性,這個庫似乎是期望的。python:打開兩個文件作爲一個文件對象
我需要一個帶有.read的FileObject,就像將兩個文件一起讀取一樣。
任何想法現有的解決方法?是的,我知道我可以一起建立自己的小班或貓文件。只是想知道是否有一些我從未聽說過的神奇的FileObject木匠。
如果您的庫從文件.read()
中讀取,將多個文件對象合併爲一個抽象概念沒有太多意義。閱讀所有內容並將其扔入StringIO
是相當簡單的。
,如果你只是想呼籲文件的ReadLine(),試試這個:
def cat(*args):
for arg in args:
with open(arg,'r') as f:
for line in f:
yield line
for line in cat('/tmp/x1','/tmp/x2'):
processLine(line)
我想我想要的是一個文件對象,它與將文件一起捕獲然後打開組合文件是無法區分的。使用tmp文件很好,但我想知道python中是否有一些神奇的連接器。 – mathtick 2013-03-27 14:48:57
你的文件對象已經通過迭代的發生器,所以只用itertools到它們鏈成一個大的迭代。
import itertools
all_the_things = itertools.chain(HeaderFile, BodyFile)
for line in all_the_things:
# your code here
這不起作用。 all_the_things.read不存在。是的,使用.read並不好,但我不能改變我使用的庫,那就是遊戲。 – mathtick 2013-03-27 18:21:46
我想唯一的問題是,如果你有一個頭文件3行,然後大量的行。在這種情況下,我認爲StringIO可能會佔用大量內存。 – mathtick 2013-03-27 14:16:30