Python 子进程参数
问题描述
例如我正在使用 ffplay
并想运行这个命令 -bufsize[:stream_specifier] integer (output,audio,video)
For example I am using ffplay
and want to run this command -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
并将整个命令作为单个字符串提供,但由于潜在的安全漏洞,不建议这样做.
As JBernardo mentioned in a comment, separate the "-bufsize 4096"
argument into two, "-bufsize", "4096"
. Each argument needs to be separated when subprocess.call
is used with shell=False
(the default). You can also specify shell=True
and give the whole command as a single string, but this is not recommended due to potential security vulnerabilities.
您不需要在有 "%s" % url
的地方使用字符串格式.如果url
是字符串,直接传递,否则调用str(url)
得到字符串表示.
You should not need to use string formatting where you have "%s" % url
. If url
is a string, pass it directly, otherwise call str(url)
to get a string representation.
相关文章