如何在循环中创建文件描述符并随后写入其中

时间:2013-04-22 20:21:28

标签: python file-io

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”。

1 个答案:

答案 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)