我有一个模板txt文件。这个模板需要写成10个新文件,然后我可以根据某些条件(与问题无关)对每个文件进行修改。
我按如下方式阅读了我的模板文件:
with open('template.txt', 'r') as template_file:
file_lines = template_file.readlines()
file_lines = [line.rstrip('\n') for line in file_lines]
for i in range(10):
new_file = open('output_%s' % i, 'w')
new_file.write(file_lines)
new_file.close()
它不起作用,因为我无法为每个文件写一个列表,它必须是一个字符串,但我不知道如何将该列表中的每个元素写入同一个文件10次...每当我以不同的方式尝试时,我最终会将每一行放在不同的文件上,而不是所有文件中的所有行。
我的逻辑有些不对劲我无法解决。
我可以这样做的另一种方式:
template_file = open('template.txt', 'r')
template_lines = template_file.read()
for i in range(10):
new_files = open('output_%s' % i, 'w')
new_files.write(template_lines)
但是我希望能够修改特定的行,这样可以更方便地逐行写入每个新文件(通过readlines())
答案 0 :(得分:2)
您可以在文件对象上使用python方法writelines(<iterable>)
。
类似的东西:
with open('template.txt', 'r') as template_file:
file_lines = template_file.readlines()
file_lines = [line.rstrip('\n') for line in file_lines]
for i in range(10):
with open('output_%s' % i, 'w') as new_file:
new_file.write_lines(file_lines)
也不确定您是否需要rstrip('\n')
readlines()
已经应该删除新行。
答案 1 :(得分:0)
尝试缩进new_file.close()
,以便在每次for循环后保存它
答案 2 :(得分:0)
我不完全明白你想要达到的目标。无论如何,这里是一个代码片段,说明如何将相同的行写入10个文件中的每一个:
with open('template.txt', 'r') as template_file:
file_lines = template_file.readlines()
file_lines = [line.rstrip('\n') for line in file_lines]
for line in file_lines:
for i in range(10):
new_file = open('output_%s' % i, 'a') # appending content
new_file.write(line)
new_file.close()
甚至是这个,如果您愿意:
with open('template.txt', 'r') as template_file:
file_lines = template_file.readlines()
file_lines = [line.rstrip('\n') for line in file_lines]
for i in range(10):
new_file = open('output_%s' % i, 'w')
for line in file_lines:
new_file.write(line)
new_file.close()
答案 3 :(得分:0)
writelines
方法完成了这项工作。
with open(TRANSFER_SKED, 'r') as template_file:
file_lines = template_file.readlines()
# file_lines = [i.rstrip('\n') for i in file_lines]
for i in range(10):
with open('output_%s.txt' % i, 'w') as new_file:
new_file.writelines(file_lines)