2017-11-05 5 views
0

私はプログラムに取り組んでいます。機能の1つは、IDにしたがってfastaファイルをソートすることです。私が理解することはできませんなぜpythonはファイルであるときにそれがフォルダであるとエラーを出していますか?

File "model.py", line 82, in sorting_files 
    my_file=open(my_fasta_file) 
IOError: [Errno 21] Is a directory: '/home/path_to_files/velvet_file/sample-name_velvet/' 

:その後、私は、メインの関数を呼び出しています

def sorting_files(output,my_fasta_file, sample_name): 
    #to sort the fasta file that contain all the genes 
    my_file=open(my_fasta_file) 
    input_handle=(my_file,'rU') 
    fasta_file=SeqIO.parse(input_handle, 'fasta') 
    sorted_fasta_file=(record for record in sorted(fasta_file, key=lambda x : x.id)) 
    sorted_file=SeqIO.write(sorted_fasta_file, output + 'sorted_' + sample_name +'.fa', 'fasta') 
    return sorted_file 

 #to sort the fasta file 
    def main():  
     folders=sorted(glob.glob(opts.input_file +'/*_velvet'))   
     for folder in folders: 
      my_fasta_file=glob.glob(folder +'/H*.fa') 
      print my_fasta_file 
      #sys.exit() 
      sorted_file=sorting_files(my_fasta_file,output,sample_name) 
      print 'The fasta file has been sorted, hoooray!' 
    main() 

When it prints my_fasta_file it prints: 

['/home/path_to_file/velvet_file/sample_name_velvet/sample_name.fa'] 

しかし、私は次のエラーメッセージを取得しています関数は次のように記述されていますエラーがどこにあるかを調べる。これに関する助言は高く評価されます。 おかげで、

答えて

1

私はあなたのコード内でそのエラーがあなたの引数の順序が付属していと思います。

def sorting_files(output,my_fasta_file, sample_name): 
    ... 
sorted_file=sorting_files(my_fasta_file,output,sample_name) 

あなたはmy_fasta_fileが行くとvicersaすべきoutputを入れています。私はoutputはあなたのコードであるかわからないが、私の推測では、それが'/home/path_to_files/velvet_file/sample-name_velvet/'

+0

おかげで、あなたの提案に続き、それが完璧に働いているディレクトリであるということです。私はPythonを学んでいるし、その注文は重要ではないと思った。いつも学ぶ。 – Ana

+1

キーワード引数のみを使用している場合は、順序は重要ではありません。残りの部分は、順序が重要です。 – rodgdor

関連する問題