I Ausgabe dieses Shell-Befehl wollen Teilprozess mit Python zu bekommen:Wie diese CLI-Befehl
loginctl show-session -p Display -p Active c2
Ausgang ist:
Display=:0
Active=yes
In Python, ich es auf diese Weise tun:
import subprocess
subprocess.call(['loginctl', 'show-session -p Display -p Active c2'])
Ich erhalte diesen Fehler:
Unknown operation show-session -p Display -p Active c2
Was könnte Ursache sein?
'subprocess.call (cmd.split())' würde dies auch für einen Befehl wie 'git commit -m funktionieren Dies ist eine Nachricht "'? Beachten Sie die Verwendung von Leerzeichen. – aceph
@aceph: Verwenden Sie '.split()' oder 'shlex.split()' nur, wenn die Eingabe hier ein Zeichenfolgenliteral ist - beide lassen sich leicht täuschen. '.split()' könnte verwendet werden, um die Zeile weniger "laut" zu machen, um den Befehl lesbarer zu machen. Wenn die Eingabe keine Konstante ist, dann benutze eine Liste: * ein Listenelement pro Kommandozeilenargument * – jfs
@aceph - nein, in deinem Fall wird es nicht, aber wie @J.F sagte Sebastian 'shlex.split' wird. Traue niemals mit externen Eingaben. Bearbeitet die Antwort, shlex.split ist viel besser als str.split hier (TIL) – orip