Ich benutze das Subprozess-Modul in Python 2.7. Mein Code sieht aus wiePython 2.7 Get Befehl stdout/stderr
cmd = 'unrar l -p%s %s' % (pwd, filename)
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
(output, err) = proc.communicate()
Dieser Code funktioniert gut auf Windows 7/10, aber es funktioniert nicht auf Ubuntu 16.04. Ich debuggte und sah, dass die Variable err leer ist, was unter Windows die Fehlermeldung enthält. Und die Variablenausgabe enthält die Hilfemeldung des Befehls. Es sieht so aus, als ob der Befehl ohne Optionen ausgeführt wurde.
Wenn dies nicht der richtige Weg ist, einen Befehl auszuführen und seine stdout/stderr-Ausgabe zu erhalten, was ist der richtige Weg?
es wird fehlschlagen, wenn 'pwd' oder' filename' Leerzeichen enthalten. Betrachte 'shlex.split()' oder nur 'cmd = [" unrar "," l "," - p ", pwd, Dateiname]' und lege 'shell = True' ab –