例如我使用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)
虽然使用shlex.split()
是矫枉过正为您的使用情况下,很多的评论似乎是询问有关情况在参数的使用空间,其中一个CLI允许您在包含空格的引号的字符串传递(即git commit -m "Commit message here"
)。
这里是一个可以用来运行,包括带有空格的参数命令的快速Python函数:
import shlex, subprocess
def run_command( command ):
subprocess.call(shlex.split(command))