如何在循环中创建文件描述符并随后写入它
问题描述:
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'。
答
像这样的事情出现在脑海:
# 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
你有问题吗? – 2013-04-22 20:23:04
谈论“文件描述符”只是让你的问题变得混乱,以便知道文件描述符_are._的人阅读。如果你想要文件对象请求文件对象。 – 2013-04-22 20:30:44