-python - 连接文本文件并将其存储到变量中

时间:2017-10-11 10:39:01

标签: python python-2.7 file concatenation

有没有办法连接两个文本文件而不将结果写入另一个文件,但只是将它存储在一个变量中? 我正在寻找的是

my_fun(cat(file1,file2))

其中my_fun将读取串联 cat 的结果,并将其用作真实文本文件。

换句话说,我想做

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)

并使用变量重新设置my_fileOut,因此不会生成outfile.write(line)但将结果存储在内存中

非常感谢您提供任何帮助或建议,

此致

PS:对不起,如果我的英语不是很好

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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结尾数据。如果您的意思是以另一种方式连接,请指明。