2014-09-01 52 views
0

我有一个文件,每行中有一个基因名称,我想建立一个列表,每个基因名称作为列表的一个元素。我用的FileInput从fileinput读取构建一个列表,无类型错误

def get_gene_symbols(): 
    gene_symbols = [] 
    for line in fileinput.input(): 
     gene_symbol = line.strip() # assume each line contains only one gene symbol 
     print gene_symbol 
     gene_symbols = gene_symbols.append(gene_symbol) 
    return gene_symbols 

print get_gene_symbols() 

我input.txt的文件看起来像这样:

cat input.txt   
    CCDC83 
    MAST3 
    FLOT1 
    RPL11 
    ZDHHC20 
    LUC7L3 
    SNORD49A 
    CTSH 
    ACOT8 

当我使用Python test.py input.txt中调用它,它给了我错误:

[email protected][scripts_general_use] python test.py input.txt 
CCDC83 
MAST3 
Traceback (most recent call last): 
    File "test.py", line 16, in <module> 
    print get_gene_symbols() 
    File "test.py", line 11, in get_gene_symbols 
    gene_symbols = gene_symbols.append(gene_symbol) 
AttributeError: 'NoneType' object has no attribute 'append' 

前两个基因名称被打印出来,但不是其他的。怎么了?我是 python的新手。谢谢!我正在使用python 2.7

回答

1

append方法返回None,不是附加列表。您正在将您的gene_symbols列表重新分配为None,然后尝试附加到gene_symbols,这现在是NoneType,因此是错误。你想,而不是改变:

gene_symbols = gene_symbols.append(gene_symbol) 

到:

gene_symbols.append(gene_symbol) 
+0

谢谢!我知道了。另一个问题是,为什么前两行打印出来,并且当第三行被读取时,python会抛出一个错误? – crazyhottommy 2014-09-01 03:19:23

+0

第一个'print'工作正常,因为你还没有做任何追加。然后你将'genetypes'设置为'None'。第二个'print'也可以工作,因为在这个阶段你还没有尝试附加到'NoneType'。第三个'print'从不会发生,因为它在尝试附加到现在为'NoneType'的'genetypes'后会发生。 – 101 2014-09-01 03:23:48

+0

现在明确!非常感谢! – crazyhottommy 2014-09-01 03:38:34

相关问题