1

スペースが含まれる場合と含まれない場合がある複数の引数を使用してexeを実行しています。私はそれらを引用符で囲みますが、どういうわけかそれらは正しくexeに渡されません。

これが私が使用しているコマンドです:

makeblastdb -in "D:\d b\sequence.fasta" -input_type fasta -dbtype prot -title xd -out "D:\d b\xd"

cmdはexeに10個の引数を渡す必要があると思いますが、どういうわけか正しく渡されていません。

これは私が得た結果です

BLAST options error: File "D:\d" does not exist.

これは基本的に、2番目の引数が何らかの理由で切り刻まれていると言っていますか?

どんな助けでもありがたいです、ありがとう!

4

3 に答える 3

3

質問に対するコメントに基づいて、BLASTユーティリティはスペースを含む引用符で囲まれたパスを適切に処理せず、ボリュームは短いファイル名をサポートしていません。

もちろん、スペースを含まないパスに作業ディレクトリを移動できます。

別の方法は、SUBSTを使用して、問題のあるパスを指す仮想ドライブを一時的に作成することです。

subst K: "d:\d b"
makeblastdb -in "K:\sequence.fasta" -input_type fasta -dbtype prot -title xd -out "K:\xd"
subst /d K:

コマンドsubst /?のヘルプを入力します。

Python内からコマンドを実行しているという事実に基づいて更新します

この回答へのコメントでは、Python内からコマンドを機能させることを試みると述べています。それがあなたの問題の全体の原因である可能性があります。

質問のコマンドは、Windowsコマンドプロンプト(cmd.exeコンソール)から直接実行してみてください。

コマンドがコマンドプロンプトから機能しない場合、問題は確かにBLASTユーティリティにあり、SUBSTが適切な解決策です。

コマンドがコマンドプロンプトから機能する場合、問題はPythonからコマンドをシェルアウトする方法にあり、SUBSTコマンドは必要ありません。

私はPythonユーザーではありませんが、WindowsでPythonを使用すると、多くの人が同様の問題を抱えているようです。おそらくこれは役立つでしょう:Pythonからプログラムを実行するにはどうすればよいですか?パス内のスペースが原因でos.systemが失敗する

于 2013-02-28T10:50:58.733 に答える
2

makeblastdb には奇妙なエスケープ規則があります。これを試して:

-in \""D:\d b\sequence.fasta"\"

残念ながら、これは -out では機能しないため、dbenham の回答がおそらく最適です。

于 2014-06-25T19:21:41.460 に答える
0

別の方法として、DドライブでコマンドをD:\d b実行することで見つけることができる""のディレクトリ短縮名を使用してみることができます。dir /Xたとえば、Cドライブでdir / Xを実行すると、次のようになります。

01/21/2013    09:47 AM    <DIR>      PROGRA~1     Program Files

したがって、使用したい場合は、C:\Program Files代わりにを使用できますC:\PROGRA~1

于 2013-02-28T01:56:00.320 に答える