比如我使用ffplay
,並希望運行此命令-bufsize[:stream_specifier] integer (output,audio,video)
Python的子參數
目前,我有這樣的:
subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url])
但這說,這是無效的。
比如我使用ffplay
,並希望運行此命令-bufsize[:stream_specifier] integer (output,audio,video)
Python的子參數
目前,我有這樣的:
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)
如果'url'包含空格? – 2012-07-27 18:54:56
它顯然不會工作。 – Fabrizio 2012-07-30 14:42:22
這就是我的觀點,這不是「走的路」,因爲它很脆弱。 – 2012-07-30 15:09:11
'-bufsize'和'4096'應該分開 – JBernardo 2012-07-27 00:39:53