2016-04-06 14 views
2

これは私の初めてのpythonの​​を使用していますが、どこが間違っているのかわかりません。ここに私のコードは次のとおりです。Python argparseエラー

#!/usr/bin/env python 

import argparse 

parser = argparse.ArgumentParser(description='Example of argparse') 

parser.add_argument('-i','--input', help='Input fasta file', required=True) 
parser.add_argument('-o','--output', help='Output text file', required=True) 
args = parser.parse_args() 

genes = {} # empty list 

with open(input, 'r') as fh_in: 
     for line in fh_in: 
       line = line.strip() 
       if line[0] == ">": 
         gene_names = line[1:] 
         genes[gene_names] = '' 
       else: 
         genes[gene_names]+=line 


for (name,val) in genes.items(): 
     with open(output, "w") as fh_out: 
       val = len(val) 
       fh_out.write('%s %s' % (name,val)) 
       fh_out.write("\n") 

と私はそれを実行しようとすると、私は

python get_gene_length.py -i test_in.fa -o test_out.txt 
Traceback (most recent call last): 
    File "get_gene_length.py", line 13, in <module> 
    with open(input, 'r') as fh_in: 
TypeError: coercing to Unicode: need string or buffer, builtin_function_or_method found 

このエラーを取得する誰もが、私はそれを動作させるために、スクリプトに変更を加える必要があるところ、私が理解するのに役立つことはできますか?

答えて

2

引数は、名前空間オブジェクトargsに解析されます。 inputの代わりにargs.inputを使用する必要があります。これは既に組み込み関数を参照している名前です。

後で出力ファイルを開く場合も同様です。

+0

入力をargs.inputに変更した後も同様に出力されました。これは大きな助けです! – upendra

2

どこでも変数inputを定義することはできませんが、コード内で使用することはできません。ただし、inputは組み込みのpython関数の名前で、NameErrorの代わりにこのエラーが発生します。

関連する問題