【问题标题】:-python - concatenate text file and store it into variable-python - 连接文本文件并将其存储到变量中
【发布时间】:2018-03-23 00:06:09
【问题描述】:

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

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 : 对不起,如果我的英语不是很好

【问题讨论】:

  • 把它当作一个真正的文本文件使用究竟是什么意思?
  • 正如 Jon Clements 所说...您必须在 my_fun() 中指定您正在使用的文件操作
  • 您是否尝试将其存储在File 对象中?或者只是变量中的str 内容?
  • @brunodesthuilliers 想知道io.StringIO(''.join(fileinput.input(['filename1', 'filename2'])) 是否会覆盖它...
  • 感谢您的回答,所以我使用的是在 github 上找到的工具,它以 file.txt 作为第一个参数 (my_fun) 但我想一次使用其中的许多。这就是为什么我需要连接然后使用结果。到目前为止my_fun 使用open(file) 但我也必须改变它。什么是文件对象 w.r.t 字符串?

标签: python python-2.7 file concatenation


【解决方案1】:

你可以使用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() 有效地连接了一个或多个可迭代对象。

【讨论】:

  • 我会试试这个,让你知道它是否有效。无论如何感谢您的帮助
【解决方案2】:

看起来你最后只想写一个文件。那为什么不呢?:

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 数据的end。如果您要以其他方式连接,请指定。

【讨论】:

  • 我不想创建另一个文件,因为它是更大项目的一部分,我可能无法这样做。我会尝试你所解释的并让你知道。谢谢
  • @Ezor 然后你需要更新你的帖子。您已经包含了一个 with open() 和一个 outfile.write(),它们将写入磁盘上的文件。
  • 嗨@pstatix,您的cat 函数似乎既简单又有效。如果我可以让我的函数my_fun 读取字符串而不是文件路径,那将非常有帮助。 :) 我在最初的帖子中写的是一个例子,但你说得对,目前还不清楚。我会改的。
  • @Ezor 我认为混淆在于my_fun 需要做什么。如果你运行我的cat 函数,你会得到一个str。如果你将str 存储在一个变量中,比如说combined,如果你提供my_fun(combined) 它会做什么?你用combined做什么?
  • 到目前为止,感谢open('path/to/file'),我的函数正在处理文件,这就是为什么我正在努力让它使用字符串而不是路径。现在,my_fun(combined) 抛出一个错误。
猜你喜欢
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多