2017-10-11 168 views
0

有沒有辦法連接兩個文本文件而不將結果寫入另一個文件,而只是將其存儲在變量中? 我正在尋找的是類似-python - 連接文本文件並將其存儲到變量中

my_fun(cat(file1,file2)) 

其中my_fun將讀取級聯的結果,並使用它,就好像它是一個真正的文本文件。

換句話說,我想要做的

with open(my_fileOut,'w') as outfile: 
    for file in [file_1,file_2]: 
     with open(file,'r') as infile: 
      for line in infile: 
       outfile.write(line) 

和remplace my_fileOut具有可變,因此不會使outfile.write(line)但結果存儲在內存中

非常感謝您的任何幫助或忠告,

問候

PS:很抱歉,如果我的英語不是很好

+2

*使用它,好像它是一個真正的文本文件*的意思是什麼? –

+0

正是Jon Clements所說的......您必須指定您在'my_fun()中使用的文件操作「 –

+0

您是否試圖將其存儲在」File「對象中?或者只是變量中的'str'內容? – pstatix

回答

0

看起來你最終只想寫一個文件。那麼,爲什麼不?:

def cat(f1, f2): 
    with open(f1, 'r') as f: 
     f1txt = f.read() 
    with open(f2, 'r') as f: 
     f2txt = f.read() 

    return f1txt + f2txt 

def my_fun(f3, text): 
    with open(f3, 'w') as f: 
     f.write(text) 

out = '/path/to/some/file' 
file1 = '/path/to/file1' 
file2 = '/path/to/file2' 

my_fun(cat(file1, file2)) 

這將會讀取所有的數據裏面file1,然後file2然後從file2添加所有的數據到結束file1數據。如果你想要連接另一種方式,請指定。

+0

我不想創建另一個文件,因爲我t是一個更大的項目的一部分,我可能無法這樣做。 我會嘗試你已經解釋並讓你知道的。 謝謝 – Ezor

+0

@Ezor然後你需要更新你的文章。你已經包含了一個'open()'和一個'outfile.write()',它將寫入磁盤上的文件。 – pstatix

+0

你好@pstatix 你的'貓'功能似乎很簡單,因爲它是有效的。如果我可以讓我的函數'my_fun'讀取字符串而不是文件路徑,這將非常有幫助。:) 我在我最初的帖子中寫的是一個例子,但你是對的,目前還不清楚。我會改變它。 – Ezor

0

您可以使用itertools.chain()

from itertools import chain 

def my_fun(f): 
    for line in f: 
     print(line.rstrip()) 

with open('file1') as file1, open('file2') as file2: 
    my_fun(chain(file1, file2)) 

這工作,因爲文件對象是可迭代的,並且chain()有效地將一個或多個iterables。

+0

我會試試這個,讓你知道它是否有竅門。無論如何感謝您的幫助 – Ezor

相關問題