【问题标题】:How to combine several text files into one file?如何将多个文本文件合并为一个文件?
【发布时间】:2017-11-27 00:05:02
【问题描述】:

我想将几个文本文件合并为一个输出文件。 我的原始代码是下载 100 个文本文件,然后每次我从几个单词中过滤文本并将其写入输出文件。

这是我的代码的一部分,假设将新文本与输出文本结合起来。结果每次覆盖输出文件,删除之前的内容并添加新的文本。

import fileinput
import glob    
urls = ['f1.txt', 'f2.txt','f3.txt']

N =0;
print "read files"
for url in urls:
 read_files = glob.glob(urls[N])
 with open("result.txt", "wb") as outfile:
    for f in read_files:
        with open(f, "rb") as infile:
            outfile.write(infile.read())
 N+=1

我也试过了

import fileinput
import glob
urls = ['f1.txt', 'f2.txt','f3.txt']

N =0;
print "read files"
for url in urls:
 file_list = glob.glob(urls[N])
 with open('result-1.txt', 'w') as file:
    input_lines = fileinput.input(file_list)
    file.writelines(input_lines)
 N+=1

有什么建议吗? 我需要按顺序将大约 100 个文本文件连接/组合成一个 .txt 文件。 (每次我读取一个文件并将其添加到result.txt中)

【问题讨论】:

  • 你必须用a+打开文件,这是追加模式,你一直打开它wb模式,每次都会覆盖你想要的东西
  • 你必须用a+打开文件。
  • 您似乎已经有了这些文件。为什么需要glob
  • for循环之前打开输出文件一次,该循环在写入之前打开并读取每个输入文件,您不需要在'a+'附加模式下打开它(常规'w'模式会很好)。
  • 那么 glob 是做什么的?

标签: python file glob


【解决方案1】:

问题是您在每次循环迭代时都重新打开输出文件,这将导致它被覆盖——除非您以附加模式显式打开它。

当您已经知道文件名时,也不需要全局逻辑。

试试这个:

with open("result.txt", "wb") as outfile:
    for url in urls:
        with open(url, "rb") as infile:
            outfile.write(infile.read())

【讨论】:

  • 合并txt文件的过程应该是循环完成的,这就是我之前打不开的原因。相同的循环用于下载和过滤 txt 文件。那么在这种情况下,为了安全起见,我应该使用“a+”吗?
猜你喜欢
  • 2021-11-08
  • 1970-01-01
  • 2013-01-09
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多