Python-subprocess Argumente
Zum Beispiel, bin ich mit ffplay
und dieser Befehl ausgeführt werden soll -bufsize[:stream_specifier] integer (output,audio,video)
Im moment habe ich dieses:
subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])
Aber das sagt es ist ungültig.
-bufsize
und4096
getrennt werden sollte
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als JBernardo erwähnt in einem Kommentar, trennen Sie die
"-bufsize 4096"
argument in zwei,"-bufsize", "4096"
. Jedes argument muss getrennt werden, wennsubprocess.call
mitshell=False
(der Standard). Sie können auch angebenshell=True
und geben Sie den gesamten Befehl als eine einzelne Zeichenfolge, aber dies wird nicht empfohlen, wegen möglicher Sicherheitslücken.Sollten Sie nicht brauchen, um die Verwendung von string-Formatierung, wo Sie
"%s" % url
. Wennurl
ist ein string, übergeben Sie es direkt, ansonsten rufenstr(url)
um eine string-Darstellung.Dies ist der Weg zu gehen:
url
Leerzeichen enthält?shlex.split
befasst sich mit diesen Arten von Fällen Ecke.Während der Verwendung
shlex.split()
ist overkill für deinen Anwendungsfall, viele der Kommentare scheinen zu Fragen über die Verwendung von Leerzeichen im Parameter-in Fällen, in denen ein CLI ermöglicht die übergabe in Zeichenfolgen, die Leerzeichen enthalten, (d.h.git commit -m "Commit message here"
).Hier ist eine schnelle python-Funktion, die verwendet werden kann zum ausführen von Kommandos einschließlich der Parameter, mit Leerzeichen: