如何使用Python动态编写多个列表来创建多个文件?

时间:2017-02-21 20:53:43

标签: python algorithm for-loop

我将尝试提供问题的示例。

我们说我们有3个名单。例如: -

list1 =['one','two','three']
list2=['a','b','c']
list3=['mike','jack','ram']

或者说,文件中的每一行都有列表值。

['one','two','three']
['a','b','c']
['mike','jack','ram']

现在我想通过创建它们将三个列表写入三个不同的文件。应自动生成文件的名称,例如: -

file001.txt
file002.txt
file003.txt

3 个答案:

答案 0 :(得分:1)

我假设您的数据在控制台中,每个列表都是一行。

类似这样的事情:

line1 =['one','two','three']
line2=['a','b','c']
line3=['mike','jack','ram']

我将所有数据合并到一个列表

all_data = [line1] + [line2] + [line3]

如果所有列表值在一个变量中逐行排列,则不需要以上部分。如果没有,你可以使用某种方法合并它们。

现在,将每一行(列表值)写入不同的文件:

count = 1

for data in all_data:
    output = open('file' + str(count) + '.txt', 'w')
    output.write(','.join(data))
    count += 1
    output.close()

这一直持续到列表的最后一个值。所以,根据有多少列表。如果您想加入列表中的值,可以使用单引号(''.join)中的所需内容更改''

希望我帮助过。

答案 1 :(得分:0)

您可以看到详细解释here。但总而言之,你可以通过打开一个文件(或创建一个文件,如果它不存在),然后编写/读取/等等来定义文件类型的对象...

答案 2 :(得分:0)

使用enumeratestring formatting构建文件名。

s = 'file{:03}.txt'
for n, lyst in enumerate((list1, list2, list3), 1):
    fname = s.format(n)
    with open(fname, 'w') as f:
        #f.write(','.join(lyst))
        f.write('\n'.join(lyst))

如果任何项目不是字符串,请将写入更改为

        f.write('\n'.join(map(str, lyst)))

如果列表太长以至于无法创建要写入文件的单个字符串,请将更改为

        for thing in lyst:
            f.write('{}\n'.format(thing))