2017-07-25 46 views
0

csvファイル内の値をフィルタリングし、関連する行を1つのファイルに書き込んでいます。ValueError:dictにはフィールド名に含まれていないフィールドが含まれています:なし

これは私が書かれたものです:

#variables 
doc = '/lab01/Projects/Lords_Projects/mna_exons.csv' 
save = '/lab01/Projects/Lords_Projects/mna_exac.csv' 
other = '/lab01/Projects/Lords_Projects/mna_alt.csv' 
error = '/lab01/Projects/Lords_Projects/mna_error.csv' 
seek = 'ExAC_ALL' 
comp = .05 

#script 
import csv 

#open 
read = open(doc, 'rb') 
write = open(save, 'wb') 
dif = open(other, 'wb') 
mis = open(error, 'wb') 

#text conversion 
reader = csv.DictReader(read, delimiter=',') 
copy = csv.DictWriter(write, delimiter='\t', fieldnames=reader.fieldnames) 
alt = csv.DictWriter(dif, delimiter='\t', fieldnames=reader.fieldnames) 
er = csv.DictWriter(mis, delimiter='\t', fieldnames=reader.fieldnames) 

#headers 
head = {} 
for n in reader.fieldnames: 
    head[n] = n 
copy.writerow(head) 
alt.writerow(head) 
er.writerow(head) 

#sorting 
for row in reader: 
    try: 
    if float(row[seek]) < comp and float(row[seek]) > -comp: 
     copy.writerow(row) 
    elif float(row[seek]) >= comp or float(row[seek]) <= -comp: 
     alt.writerow(row) 
    except: 
    try: 
     if row[seek] == 'N/A': 
     copy.writerow(row) 
    except: 
     prob = csv.writer(write, delimiter='\t') 
     er.writerow(row) 
     prob.writerow("Value Not Float\n") 
#Close 
read.close() 
write.close() 
dif.close() 
mis.close() 

#Error Check 
if 'Value Not Float\n' in open(save, 'r').read(): 
    print('Error') 
open(save, 'r').close() 

私はそれを実行すると、それは私にこのエラーメッセージを表示します。

Traceback (most recent call last): File "csv_cond_filter.py", line 45, in er.writerow(row) File "/usr/lib64/python2.7/csv.py", line 152, in writerow return self.writer.writerow(self._dict_to_list(rowdict)) File "/usr/lib64/python2.7/csv.py", line 148, in _dict_to_list + ", ".join([repr(x) for x in wrong_fields])) ValueError: dict contains fields not in fieldnames: None

特に間違っているかもしれないものを見るためにテストするために、私が作りましたエラーはコメントにコメントを付け、スクリプトを再度実行しました。それは私にエラーメッセージを与えなかったし、エラー値を出力しなかったので、セグメントを分類できなかった場合は書き込むように指定したので、構文エラーだと思われますが、Pythonには新しく、 csvモジュールまたはDictWriterについて十分に知っています。

+0

er.writerow(row) 

? –

答えて

0

これは、行の内容を表示するようにしてください:置き換える我々は、エラーの原因となるファイルのサンプルを得ることができます

try: 
    er.writerow(row) 
except Exception as exc: 
    exc.args += (row,) 
    raise 
関連する問題