1
サブプロセスを介してコマンドを実行すると、印刷せずに終了ステータス1が表示されるか、エラーが発生します。サブプロセスが終了ステータス1を返します
def generate_model(self):
if not ((self.username == None) or (self.password == None) or (self.database == None)):
cmd = "python -m pwiz -e %s -H %s -u %s -P %s %s > %s"%(self.engine,self.host,self.username,self.password,self.database,self.database+".py")
print subprocess.check_call(cmd)
else:
raise ValueError
コマンドは、端末が開かれると、入力を求められます。
は、ここに私のコードです。私は、コマンドに直接同じコマンドを実行すると、それはそれは細かい
各文字列を別々にして配列内にコマンドを入れてみましたか? '['python'、 '-m'、 'pwiz']' ... shlex.splitも使用できます。 – Idos
はい、私はそれを試しても、それは 'exit code 1'を返します。 – Harwee
@Idosの助言は、コマンド注入を防ぐために必要なので、本当に良いです。コマンドを文字列として構築しないでください。この問題を解決するには、 'cmd'を印刷してプログラムを実行する必要があります。 '>'リダイレクトを使うと 'check_call()'に 'shell = True'を設定する必要があります。 –