1

我正在使用 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()
4

1 回答 1

2

我想通过

if dict_data['COMPOUND'] == True:

您测试(错误地)'COMPOUND'dict_data. 在这种情况下,你想要的是

if 'COMPOUND' in dict_data:

此外,请注意,compData如果键不存在,则不会发生变量的定义,这会在尝试写入其值时引发错误。这意味着你应该总是定义它无论发生什么,通过做,例如

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

上面这行代码意味着如果键存在,则获取其值,如果不存在,则'undefined'取而代之。请注意,您可以选择所需的替代值,甚至不提供任何值,None默认情况下会导致。

于 2017-02-18T03:18:11.957 回答