簡體   English   中英

使用readlines()將模板txt文件寫入“ x”個新文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM