'for loop' 用于更新 argparser 参数
'for loop' for updating argparser argument
我的代码使用 'for loop' 和 youtube api 在 youtube 视频 link 中搜索文件中的每一行。
文件行看起来像这样 'video_id name'。我将此 video_id 值传递给我的函数,但 'argparser function' 失败了。 第一次迭代代码失败后 尝试启动此 args = argparser.parse_args()
有没有办法清除 argparser?我用谷歌搜索,但似乎没有针对我不断变化的 argparser 参数值的解决方案。 link 建议创建父解析器,但我不明白它对我的问题有何帮助。
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)
我的代码使用 'for loop' 和 youtube api 在 youtube 视频 link 中搜索文件中的每一行。
文件行看起来像这样 'video_id name'。我将此 video_id 值传递给我的函数,但 'argparser function' 失败了。 第一次迭代代码失败后 尝试启动此 args = argparser.parse_args()
有没有办法清除 argparser?我用谷歌搜索,但似乎没有针对我不断变化的 argparser 参数值的解决方案。 link
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)