如果声明和写入文件

时间:2017-02-18 03:06:48

标签: python-2.7

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

1 个答案:

答案 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