所以我有一个脚本可以生成为字典中的每个键命名的文件。 (下面的脚本)
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)中的代码而没有任何解释。
答案 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....>
的内容。