2013-04-22 165 views
0

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',“字段4。 txt'和'field5.txt'。

我只想读取一次输入文件。对于每一行,我都检查如果一个字段不是空白('_'),则将完整的行写入以相应字段名称开头的文件中。

例如,由于第1行的第一,第三和第五个字段不是空白,因此该行将写入文件'field1.txt','field3.txt'和'field5.txt'。

+2

你有问题吗? – 2013-04-22 20:23:04

+0

谈论“文件描述符”只是让你的问题变得混乱,以便知道文件描述符_are._的人阅读。如果你想要文件对象请求文件对象。 – 2013-04-22 20:30:44

回答

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) 
+0

您的解决方案非常棒。另外要补充的是,可以打开的文件数量有资源限制。默认情况下它是256,可以通过使用“resource.setrlimit()”函数来增加。 – user1140126 2013-04-22 20:55:38