モジュールのファイル名と引数をcall()
モジュールを使用して渡す基本関数を作成しようとしています。ファイル名と引数は変数です。 call()
を使用すると、変数が必要になりますが、呼び出されるプログラムは、"
を含む文字列を読み込みます。ここで Python 2.7.xでサブプロセスによって呼び出されたコマンドの引数として変数を使用
from subprocess import call
def mednafen():
print "Loading "+romname+"..."
call(["mednafen", args, romname])
print "Mednafen closed."
romname="kirby.zip"
args="-fs 1"
mednafen()
私はこれが
mednafen -fs 1 kirby.zip
を実行すると期待されるが、代わりに、このように、可変の文字列を解釈するために表示されます。
mednafen "-fs 1" "kirby.zip"
のため、これは、で始まる引数を解析できないため、mednafenを実行できません。。 shell=True
を使用すると期待どおりに機能しますが、その機能は悪用されやすいので強く推奨されません。
call("mednafen "+ args +" "+romname+"; exit", shell=True)
shell=True
形式を使用せずにこれを行う方法はありますか?
argsをstr(args)に置き換えてみてください – XZ6H
ありがとう、私はそれを行ったが、何の効果もなかったようだ。 call()は引き続き引用符付きの変数を解釈しています。 –
あなたのコードは実際にパラメータを渡すわけではありませんが、私たちはあなたが意味するものを推測できます。 – tripleee