2013-04-22 212 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

相關問題