-2

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

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

例如;

我有这些文本文件。

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

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

merol123.txt(嗨,只是另一行。)

*

merge.txt >>> 已编辑并准备再次拆分。>> 结果需要是这样的;

*

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

ipsum.txt(另一个编辑的行。)

merol123.txt(另一个编辑的行。编号 4847887)

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

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

4

1 回答 1

1

首先,我假设你没有正确地重复你的字符串(比如“嗨,这是一个示例行。”!=“嗨,这是编辑的行。”)错误,不是故意的(我不能弄清楚)。

我将累积文件命名为与目标目录中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)
于 2019-07-13T00:29:20.763 回答