我正在使用KEGG API下载基因组数据并将其写入文件。总共有26个文件,其中一些包含字典' COMPOUND'。我想将这些分配给CompData并将它们写入输出文件。我尝试将其写为if True语句,但这不起作用。
#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 :(得分:2)
我想通过
if dict_data['COMPOUND'] == True:
您({错误地)测试'COMPOUND'
中是否存在字符串键dict_data
。在这种情况下你想要的是
if 'COMPOUND' in dict_data:
此外,请注意,如果密钥不存在,则变量compData
的定义不会发生,这会在尝试写入其值时引发错误。这意味着你应该随时通过做,例如
compData = str(dict_data.get('COMPOUND', 'undefined'))
上面的代码行意味着如果密钥存在则获取其值,如果不存在,则代之以'undefined'
。请注意,您可以选择所需的替代值,甚至不提供任何替代值,默认情况下会导致None
。