【问题标题】:How to create file descriptors in loop and subsequently write into it [closed]如何在循环中创建文件描述符并随后写入它[关闭]
【发布时间】:2013-04-22 20:21:28
【问题描述】:

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

【问题讨论】:

  • 您有问题吗?
  • 谈论“文件描述符”只会让知道文件描述符是什么的人难以理解。如果您想要文件对象,请询问文件对象。

标签: python file-io


【解决方案1】:

想到这样的事情:

# 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)

【讨论】:

  • 您的解决方案很棒。另外要补充的是,可以打开的文件数量存在资源限制。默认为 256,可以使用“resource.setrlimit()”函数增加。
猜你喜欢
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 2014-02-06
相关资源
最近更新 更多