如何重新合并和拆分成千上万个文本文件?

时间:2019-07-13 00:02:54

标签: python text merge filesplitting

我有成千上万个.txt文件。这些文本文件包含一个字符串。 (每个文件都有不同的字符串。)

我想编辑这些字符串,但是我不想手动一个个地打开每个文件进行编辑。因此,我想将所有这些文件合并为一个.txt文件,在完成编辑后,我想使用合并之前所拥有的相同文件名再次分隔/分割它们。

例如;

我有这些文本文件。

lorem.txt(嗨,这是示例行。)

ipsum.txt(嗨,这是另一行。)

merol123.txt(嗨,另一行。)

*

  

merged.txt >>>已编辑,可以再次拆分。 >>结果必须是   像这样;

*

lorem.txt(嗨,这是编辑行。)

ipsum.txt(另一行编辑内容)。

merol123.txt(另一条编辑行,编号4847887)

  

注意:方括号内的句子表示txt文件中的字符串。

有可能吗?我正在等待您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我假设您没有正确地重复输入字符串(例如“ hi,这是示例行。”!=“ hi,这是经编辑的行。”),这不是出于故意,而是故意的(我不知道)。

我将累积文件common.doc命名为与目标目录中的其他.txt文件不同。另外,此示例代码暗示所有文件都在同一目录中。

# merging.py
import os
import glob

with open("common.doc", "w") as common:
    for txt in glob.glob("./*.txt"):
        with open(txt, "r") as f:
            content = f.read()
        common.write("{} ({})\n".format(os.path.basename(txt), content))

common.doc编辑之后:

# splitting.py
with open("common.doc", "r") as common:
    for line in common:
        name = line[:line.find(" (")]
        text = line[line.find(" (")+2:line.rfind(")")]
        with open(name, "w") as f:
            f.write(text)

还有一种用于多行文本的解决方案(合并时保留了.strip(),在内容写作时已删除),不适合成千上万的文件。

# splitting2.py
with open("common.doc", "r") as common:
    everything = common.read()
elements = everything.split(")")
for elem in elements:
    name = elem[:elem.find(" (")].strip()
    text = elem[elem.find(" (")+2:]
    if name:
        with open(name, "w") as f:
            f.write(text)