TypeError:只能连接列表(不是" str")来列出subprocess.call

时间:2014-03-17 02:25:17

标签: python subprocess

我正在尝试构建一个小脚本来下载视频。我在尝试将整数传递给subprocess.call时遇到问题。提前谢谢

# test url for analysis
URL = 'https://www.youtube.com/watch?v=7WauUpq4N8I'
import subprocess
subprocess.call("youtube-dl -F '%s'" %URL, shell=True)
print
# outlist numerical list of options
#input choice
Q = raw_input('Please select download quality from above ')
print 
# pass input Q (integer) to subprocess.call
import subprocess
subprocess.call(["youtube-dl -f "] + Q ,["'%s'" %URL], shell=True) 

追踪(最近一次呼叫最后一次):

  File "./youtube.py", line 21, in <module>
    subprocess.call(["youtube-dl -f "] + Q ,["'%s'" %URL], shell=True)
TypeError: can only concatenate list (not "str") to list

subprocess.call是第21行

1 个答案:

答案 0 :(得分:2)

错误消息告诉您不能将列表(例如:['foo', 'bar'])连接到字符串(例如:'baz')。您可能想要做的是将您的单个参数包装在列表中或者更加简洁,将其作为原始列表的一部分:

(将其包装在列表中)

# SNIP
import subprocess
subprocess.call(["youtube-dl", "-f "] + [Q] + [URL]) 

(使其成为原始列表的一部分

# SNIP
import subprocess
subprocess.call(['youtube-dl', '-f', Q, URL])