2017-02-18 59 views
0

我正在使用KEGG API下载基因组数据并将其写入文件。总共有26个文件,其中一些包含字典'COMPOUND'。我想将这些分配给CompData并将它们写入输出文件。我试图把它写成True if语句,但这不起作用。如果声明和写入文件

#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

如果我在真正运行的东西下面添加一个else语句,它会运行,这意味着条件是错误的。 – Quintakov

回答

2

我想通过

if dict_data['COMPOUND'] == True: 

你测试(错误地)的字符串中dict_data关键'COMPOUND'的存在。在这种情况下,你想要的是

if 'COMPOUND' in dict_data: 

而且,请注意,如果该键不存在,试图写它的价值时将产生错误不会发生变化compData的定义。这意味着无论发生什么事,你都应该定义它,例如,

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

上面的代码线意味着如果键存在它得到其值,并且如果不存在,则它得到'undefined'代替。请注意,您可以选择所需的替代值,或者甚至不给出任何值,默认情况下会导致None