[英]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.