循环遍历文件,然后在编辑后关闭
Looping through files and then closing after edits
我正在尝试执行以下操作:
不确定数量的文本文件将在一个文件夹中,我想:
1.一次打开一个文件,然后
2.通读文件中的文本以查找特定字符串,然后
3.将文本文件的全部内容追加到一个docx文件中,并保存为步骤2中的字符串名称
4. 重复文件夹中的以下文本文件
我已经完成了所有这些,并认为我已经开始工作了。然而,当文件被保存时,一切看起来都很好,但是第一个打开的文本文件然后被复制到现在已经创建的所有其他 docx 文件,而不是每个都被复制并关闭。我错过了什么?
import docx
import os
design_doc = docx.Document("Configuration_V1.docx")
directory = r"C:\Configuration Files"
all_files = os.listdir(directory)
for config_file in all_files:
with open(os.path.join(directory, config_file), "r") as f:
config = f.read()
design_doc.add_paragraph(config)
target = "hostname"
words = config.split()
for i,w in enumerate(words):
if w == target:
hostname = words[i+1]
design_doc.save(hostname + ".docx")
f.close()
为了澄清,docx 文件是用正确的名称创建的,因为每个文本文件中的字符串总是不同的并且正在读取,但是当我打开每个新的 docx 文件时,复制的文本全部来自第一个文本文件。每个文本文件的内容都应附加到每个 docx。
谢谢
如果每次都想要一个新文档,则需要每次都创建一个新文档。否则,您只是在同一 "in-memory" 文档中添加一个新段落并将其另存为新名称。
我想你想要这样的东西:
directory = r"C:\Configuration Files"
all_files = os.listdir(directory)
for config_file in all_files:
with open(os.path.join(directory, config_file), "r") as f:
config = f.read()
design_doc = docx.Document("Configuration_V1.docx")
design_doc.add_paragraph(config)
target = "hostname"
words = config.split()
for i, w in enumerate(words):
if w == target:
hostname = words[i+1]
design_doc.save(hostname + ".docx")
f.close()
我正在尝试执行以下操作: 不确定数量的文本文件将在一个文件夹中,我想: 1.一次打开一个文件,然后 2.通读文件中的文本以查找特定字符串,然后 3.将文本文件的全部内容追加到一个docx文件中,并保存为步骤2中的字符串名称 4. 重复文件夹中的以下文本文件
我已经完成了所有这些,并认为我已经开始工作了。然而,当文件被保存时,一切看起来都很好,但是第一个打开的文本文件然后被复制到现在已经创建的所有其他 docx 文件,而不是每个都被复制并关闭。我错过了什么?
import docx
import os
design_doc = docx.Document("Configuration_V1.docx")
directory = r"C:\Configuration Files"
all_files = os.listdir(directory)
for config_file in all_files:
with open(os.path.join(directory, config_file), "r") as f:
config = f.read()
design_doc.add_paragraph(config)
target = "hostname"
words = config.split()
for i,w in enumerate(words):
if w == target:
hostname = words[i+1]
design_doc.save(hostname + ".docx")
f.close()
为了澄清,docx 文件是用正确的名称创建的,因为每个文本文件中的字符串总是不同的并且正在读取,但是当我打开每个新的 docx 文件时,复制的文本全部来自第一个文本文件。每个文本文件的内容都应附加到每个 docx。
谢谢
如果每次都想要一个新文档,则需要每次都创建一个新文档。否则,您只是在同一 "in-memory" 文档中添加一个新段落并将其另存为新名称。
我想你想要这样的东西:
directory = r"C:\Configuration Files"
all_files = os.listdir(directory)
for config_file in all_files:
with open(os.path.join(directory, config_file), "r") as f:
config = f.read()
design_doc = docx.Document("Configuration_V1.docx")
design_doc.add_paragraph(config)
target = "hostname"
words = config.split()
for i, w in enumerate(words):
if w == target:
hostname = words[i+1]
design_doc.save(hostname + ".docx")
f.close()