例如我正在使用ffplay
并想运行这个命令-bufsize[:stream_specifier] integer (output,audio,video)
目前我有这个:
subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])
但这表示它是无效的。
例如我正在使用ffplay
并想运行这个命令-bufsize[:stream_specifier] integer (output,audio,video)
目前我有这个:
subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])
但这表示它是无效的。
正如 JBernardo 在评论中提到的那样,将"-bufsize 4096"
论点分成两部分,"-bufsize", "4096"
. subprocess.call
与shell=False
(默认)一起使用时,每个参数都需要分开。您还可以shell=True
将整个命令指定为单个字符串,但由于潜在的安全漏洞,不建议这样做。
您不需要在拥有"%s" % url
. 如果url
是字符串,则直接传递,否则调用str(url)
获取字符串表示。
这是要走的路:
url = 'http://www.whatever.com'
cmd = 'ffplay -vn -nodisp -bufsize 4096 '.split()
subprocess.call(cmd + [str(url)], shell=False)
虽然 usingshlex.split()
对于您的用例来说是多余的,但许多评论似乎都在询问在 CLI 允许您传递包含空格(即git commit -m "Commit message here"
)的带引号的字符串的情况下在参数中使用空格。
这是一个快速的 Python 函数,可用于运行命令,包括带空格的参数:
import shlex, subprocess
def run_command( command ):
subprocess.call(shlex.split(command))