[英]Using readlines() to write a template txt file to 'x' new files
我有一个模板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())
您可以在文件对象上使用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()
已经应该删除换行符。
尝试缩进new_file.close()
以便在每个for循环之后将其保存
我不完全了解您想要实现的目标。 无论如何,这是一个代码片段,说明如何向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()
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.