Python - 在创建期间生成自定义文件名

时间:2013-04-12 22:05:38

标签: python

所以我有一个脚本可以生成为字典中的每个键命名的文件。 (下面的脚本)

 for key, values in sequencelist.items():
     with open(key, 'w') as out:
         for value in values:
             out.write('\n'.join(value.split()) + '\n')

有人可以帮我修改上面的语法来做更多吗?我想在文件名上添加一些纯文本,并使用len(dict.keys())添加当前range()。请参阅下面的我的脚本,这不起作用! :)

for key, values in sequencelist.items():
    for i in range(len(sequencelist.keys())):
        j = i+1
        with open('OTU(%j)' +'_' + key +'.txt' %j, 'w') as out:
            for value in values:
                out.write('\n'.join(value.split()) + '\n')

所以创建的第一个文件是OTU(1)_ key。txt

我确信with open()行100%错误。

有人还可以链接我的内容,以了解使用%j在行前调用变量j吗?我试图使用此溢出答案(Input a text file and write multiple output files in Python)中的代码而没有任何解释。

1 个答案:

答案 0 :(得分:1)

尝试以下

for count, (key, values) in enumerate(sequencelist.items()):
    with open('OTU(%d)_%s.txt' % (count+1, str(key)), 'w') as out:
        for value in values:
            out.write('\n'.join(value.split()) + '\n')

我将您的公开调用的顺序与您的值迭代交换,因此您不会为每个值获取len(sequencelist)个文件。在此更改后,似乎不需要您的j参数。每次循环重复时,枚举调用都会使for循环的计数成为一部分(不必称为count)。

%d要求输入一个整数,%s为字符串,这取决于键名称将与str()很好地转换。如果您的密钥是某个自定义类,则您需要将其转换为更好的字符串格式,因为您会得到类似<class __main__.Test at 0x00000....>的内容。