我有成千上万个.txt文件。这些文本文件包含一个字符串。 (每个文件都有不同的字符串。)
我想编辑这些字符串,但是我不想手动一个个地打开每个文件进行编辑。因此,我想将所有这些文件合并为一个.txt文件,在完成编辑后,我想使用合并之前所拥有的相同文件名再次分隔/分割它们。
例如;
我有这些文本文件。
lorem.txt(嗨,这是示例行。)
ipsum.txt(嗨,这是另一行。)
merol123.txt(嗨,另一行。)
*
merged.txt >>>已编辑,可以再次拆分。 >>结果必须是 像这样;
*
lorem.txt(嗨,这是编辑行。)
ipsum.txt(另一行编辑内容)。
merol123.txt(另一条编辑行,编号4847887)
注意:方括号内的句子表示txt文件中的字符串。
有可能吗?我正在等待您的帮助,谢谢!
答案 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)