Wenn ich einen Befehl durch Subprozess ausführen, bekomme ich den Exit-Status 1 ohne mein Drucken oder den Fehler ausgelöst.Subprozess gibt Exit Status 1 zurück
hier ist mein Code:
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
Befehl fragt eine Eingabe einmal Terminal geöffnet wird. Danach wird es mit exit status 1
schließt, wenn ich den gleichen Befehl direkt in Befehl ausführen Prompt es fein
Haben Sie versucht, Ihren Befehl innerhalb eines Arrays mit jeder Zeichenfolge getrennt zu setzen? d. h. '['python', '-m', 'pwiz']' ... Sie können auch 'shlex.split' verwenden. – Idos
Ja, ich habe es versucht, sogar, dass 'exit code 1' zurückgibt – Harwee
Der Hinweis @Idos gegeben ist ein wirklich guter, da es erforderlich ist, um die Befehlsinjektion zu verhindern. Konstruiere niemals Befehle als Zeichenfolgen. Um das Problem zu lösen, sollten Sie 'cmd' drucken und das Programm ausführen. Bei '>' Umleitung muss möglicherweise 'shell = True' für' check_call() 'gesetzt werden. –