2017-02-18 6 views
0

私はKEGG APIを使用してゲノムデータをダウンロードし、ファイルに書き出しています。合計26のファイルがあり、そのうちのいくつかは辞書 'COMPOUND'を含んでいます。これらをCompDataに割り当てて、出力ファイルに書きたいと思います。私はそれを真の文で書くことを試みたが、これはうまくいかなかった。ファイルへのステートメントと書き込みの場合

#Read in hsa links 

hsa = [] 
with open ('/users/skylake/desktop/pathway-HSAs.txt', 'r') as file: 
    for line in file: 
     line = line.strip() 
     hsa.append(line) 

#Import KEGG API Bioservices | Create KEGG Variable 
from bioservices.kegg import KEGG 
k = KEGG() 

#Data Parsing | Writing to File 
#for i in range(len(hsa)): 
data = k.get(hsa[2]) 
dict_data = k.parse(data) 
if dict_data['COMPOUND'] == True: 
    compData = str(dict_data['COMPOUND']) 
nameData = str(dict_data['NAME']) 
geneData = str(dict_data['GENE']) 
f = open('/Users/Skylake/Desktop/pathway-info/' + nameData + '.txt' , 'w') 
f.write("Genes\n") 
f.write(geneData) 
f.write("\nCompounds\n") 
f.write(compData) 
f.close() 
+0

「これは機能しません」とはどういう意味ですか?例えば。それはエラーを起こすか? – Kanak

+0

trueの場合に実行する必要があるものの下にelse文を追加すると、これが代わりに実行されます。つまり、条件がfalseであることを意味します。 – Quintakov

答えて

2

は、私は推測することdict_data'COMPOUND'キー文字列の存在を

if dict_data['COMPOUND'] == True: 

あなたのテスト(誤って)によります。何をしたい。この場合、さらに

if 'COMPOUND' in dict_data: 

で、キーはその値を書き込もうとしたときにエラーが発生しますこれ、存在しない場合、変数compDataの定義が発生しないことに注意してください。これは、何が起こったとしても、それを定義する必要があることを意味します。

compData = str(dict_data.get('COMPOUND', 'undefined')) 

上記のコード行は、キーが存在する場合、その値を取得し、存在しない場合、それは代わり'undefined'を取得することを意味します。必要に応じて代替値を選択することも、何も指定しないこともできます。デフォルトではNoneになります。

関連する問題