繁体   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