在Python Multiple file writing question上已经提出了类似的问题,但它没有解决我的问题,因为文件描述符是唯一的,我不知道如何在循环中动态创建文件描述符。
我有一个巨大的文件,格式如下:
field1 field2 field3 field4 field5
a _ b _ c
d e f g g
l _ _ m _
_ n o _ p
我需要创建5个单独的文件'field1.txt','field2.txt','field3.txt','field4.txt'和'field5.txt'。
我只想读取输入文件一次。对于每一行,我检查如果一个字段不是空白('_'),那么将整行写入以相应字段名开头的文件。
例如,由于第1行的第一,第三和第五个字段不是空白,因此该行将写入文件“field1.txt”,“field3.txt”和“field5.txt”。
答案 0 :(得分:2)
想到这样的事情:
# TESTED
f = open('inputfile.txt')
line1 = next(f)
line1 = line1.split()
output_files = [open(fname+'.txt', 'w') for fname in line1]
for line in f:
for output_file, field in zip(output_files, line.split()):
if field != '_':
output_file.write(line)