我的代码使用'for loop'和youtube api搜索文件中的每一行的youtube视频链接。
文件行看起来像" video_id name"。我将此Video_ID值传递给我的函数,该函数的" ArgParser函数"失败。在尝试启动此args = argparser.parse_args()
有没有办法可以清除Argparser?我为此谷歌搜索,但是似乎没有解决我特定不断变化的Argparser参数价值的解决方案。此链接禁用/删除Argparse中的参数建议创建父parser,但我不明白它如何帮助我的问题。
def ytSearchLaunch(video_id):
argparser.add_argument("--q", help="Search term", default=video_id)
argparser.add_argument("--max-results", help="Max results", default=25)
args = argparser.parse_args()
youtube_search(args)
这是整个代码。
def youtube_search(options):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q=options.q,
type="video",
part="id,snippet",
maxResults=options.max_results
).execute()
def ytSearchLaunch(video_id):
argparser.add_argument("--q", help="Search term", default=video_id)
argparser.add_argument("--max-results", help="Max results", default=25)
args = argparser.parse_args()
youtube_search(args)
def checkDateFunction():
fname = 'file'
f = open(fname,'r')
for l in f:
video_id = l.split()[0]
ytSearchLaunch(video_id)
您的ytSearchLaunch
函数正在采用由其他代码创建的argparser
对象,向其添加了几个参数,然后解析命令行值(您也可以在sys.argv
中看到)。然后,它将结果args
名称空间对象传递给youtube_search
。
如果您显示了argparser
是如何创建的,或者至少显示其产生的help
或usage
,这将有所帮助。解析后可以看到args
对象也很高兴。
如果我阅读了此正确的内容,则每次使用不同的-q
默认值来多次解析输入。但是您不能多次将相同的参数添加到argparser
。您可以做一次,但是在重复呼叫时,您必须修改现有参数。
这是一个可能的修复:
def ytSearchLaunch(video_id, added_actions=[]):
if len(added_actions)==0: # first time
a1 = argparser.add_argument("--q", help="Search term", default=video_id)
a2 = argparser.add_argument("--max-results", help="Max results", default=25)
added_actions.append(a1)
added_actions.append(a2)
else: # repeats
# change defaults to the -q argument without adding a new one
added_actions[0].default = video_id
args = argparser.parse_args()
youtube_search(args)