我希望使用if和elif语句下载带字幕或不带字幕的视频。当前只有我的第一个选项有效,尽管选择了第二个选项,但选择第二个选项时,第一个选项仍在运行。
当前,我的实现是:
import youtube_dl
def switch_demo(x):
switcher = {
1: "With Subtitles",
2: "Without Subtitles",
}
return switcher.get(x,"Invalid Option")
x = int(input("Select the option\n1.With Subtitles\n2.Without Subtitles\n\n"))
print(switch_demo(x))
link=input('Please enter a url link\n')
if switch_demo(1):
ydl_opts = {"writesubtitles": True}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([link])
elif switch_demo(2):
ydl_opt = {}
with youtube_dl.YoutubeDL(ydl_opt) as ydl:
ydl.download([link])
我希望能够在两个选项都起作用的情况下下载带或不带字幕的视频。
答案 0 :(得分:0)
您没有将x
传递给该函数,因此您永远都不会改变结果,也就是说我已经重新编写了您的代码。
import youtube_dl
switcher = {
1: "With Subtitles",
2: "Without Subtitles",
}
def switch_demo(x):
return switcher.get(x, False)
print("Select an option")
print(*["#{} {}".format(i + 1, switcher[i + 1]) for i in range(max(switcher.keys()))], sep = "\n")
option = int(input("> "))
link = input('Please enter a url link\n')
useSubtitles = switch_demo(x)
ydl_opts = {"writesubtitles": useSubtitles}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([link])
答案 1 :(得分:0)
您使用函数switch_demo返回值作为条件来驱动if语句。问题是python将任何非null值视为真实语句,因此这就是您的第二选择永远无法运行的原因