2012-07-27 18 views
8

比如我使用ffplay,並希望運行此命令-bufsize[:stream_specifier] integer (output,audio,video)Python的子參數

目前,我有這樣的:

subprocess.call(["ffplay", "-vn", "-nodisp","-bufsize 4096", "%s" % url]) 

但這說,這是無效的。

+11

'-bufsize'和'4096'應該分開 – JBernardo 2012-07-27 00:39:53

回答

12

正如JBernardo在評論中提到的,將"-bufsize 4096"參數分爲兩個,"-bufsize", "4096"。當使用subprocess.callshell=False(默認值)時,每個參數需要分開。您也可以指定shell=True並將整個命令作爲單個字符串,但由於潛在的安全漏洞,不建議這樣做。

如果您有"%s" % url,則不需要使用字符串格式。如果url是一個字符串,則直接傳遞它,否則請調用str(url)以獲取字符串表示形式。

3

這是要走的路:

url = 'http://www.whatever.com' 
cmd = 'ffplay -vn -nodisp -bufsize 4096 '.split() 
subprocess.call(cmd + [str(url)], shell=False) 
+0

如果'url'包含空格? – 2012-07-27 18:54:56

+0

它顯然不會工作。 – Fabrizio 2012-07-30 14:42:22

+3

這就是我的觀點,這不是「走的路」,因爲它很脆弱。 – 2012-07-30 15:09:11