2011-10-27 13 views
1

私は、入力ファイルを要求し、その上でいくつかのコマンドを実行するスクリプトを作成しようとしています。私はそれがファイル名を掲載しaskesスクリプトを実行すると、私は、ファイル(例えばexample.bam)を得たとき、私はこのエラーを取得するとき:ファイルを入力し、非同期的にコマンドを実行するにはどうすればいいですか?

NameError: name 'example.bam' is not defined

私は多くのことを試してみましたが、私はそれを修正することができませんでした。誰かが間違っていることを教えてくれますか?

これは私のCOMANDです:

from subprocess import call 
filename = input ("filename: "); 
with open (filename, "r") as a: 
    for command in ("samtools tview 'a' /chicken/chick_build2.1_unmasked.fa",): 
     call(command, shell=True) 

は、これは私のコマンドの短いバージョンです:それははるかにものを行う必要があります。私は同時に4-6個のファイルを入力することも考えています(おそらくこの情報は私の意図を明確にするのに役立ちます)。

+0

は私が入力しようとしているファイルは、BAM形式(バイナリ形式)であることを追加する必要があり – mahmood

+0

は、あなたが投稿エラーが与えますあなたがどこかで 'example'変数を使用していますが、まだ定義されていないという印象を与えました。その変数がどこで使われているのか分かりますか?それがあれば投稿できますか? – jro

+0

"example"は私が入力するファイルです!このスクリプトを実行すると、ファイルを要求してからexample.bamを実行すると、NameError:name 'example.bam'が定義されていないというエラーが表示されます。 – mahmood

答えて

3

inputは、eval(raw_input(prompt))に相当します。したがって、あなたのスクリプトが現在実行しようとしていることは、あなたの入力を解釈して(あなたのケースでは "example")、それがスクリプトの文であるかのように実行することです。ユーザーの入力については(あなたが何をしているか分からない限り、単に「すべての入力に対して」と言うこともできます)、常にraw_input関数を使用してください。

だから、それを解決するために、raw_inputinputを置き換える:

filename = raw_input("filename: ") 
+0

ファイルが存在しないという別のエラーが表示されるようになりました! > open:そのようなファイルまたはディレクトリがありません – mahmood

+0

2つの点を確認してください:入力したファイル名は正しいですか?ファイルは現在のパスで使用可能ですか? – jro

+0

両方の答えがイエスです!それは正しいですし、同じフォルダにあるので、私はちょうど名前を入れて!私はルートからのすべてのパスでそれを試しました! – mahmood

関連する問題