Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ';对于循环';用于更新argparser参数_Python_Youtube Api_Argparse - Fatal编程技术网

Python ';对于循环';用于更新argparser参数

Python ';对于循环';用于更新argparser参数,python,youtube-api,argparse,Python,Youtube Api,Argparse,我的代码使用“for loop”和youtube api在youtube视频链接中搜索文件中的每一行 文件行看起来像这个“视频id名称”。我正在将此video_id值传递给我的函数,但“argparser function”失败第一次迭代后,尝试启动此args=argparser.parse_args() 有没有办法清除argparser?我在谷歌上搜索了一下,但似乎对于我的argparser参数的特定不断变化的值没有解决方案。这个链接建议创建父解析器,但我不明白它如何帮助解决我的问题 def

我的代码使用“for loop”和youtube api在youtube视频链接中搜索文件中的每一行

文件行看起来像这个“视频id名称”。我正在将此video_id值传递给我的函数,但“argparser function”失败第一次迭代后,尝试启动此
args=argparser.parse_args()

有没有办法清除argparser?我在谷歌上搜索了一下,但似乎对于我的argparser参数的特定不断变化的值没有解决方案。这个链接建议创建父解析器,但我不明白它如何帮助解决我的问题

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\u search

如果您展示了
argparser
是如何创建的,或者至少展示了它生成的
help
用法,这将对我们有所帮助。在解析后看到
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)

您的
ytSearchLaunch
函数将获取由其他代码创建的
argparser
对象,向其添加两个参数,然后解析命令行值(您也可以在
sys.argv
中看到)。然后将生成的
args
命名空间对象传递给
youtube\u search

如果您展示了
argparser
是如何创建的,或者至少展示了它生成的
help
用法,这将对我们有所帮助。在解析后看到
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)

我在youtube api页面的示例代码中使用它,它从oauth2client
从oauth2client.tools导入argparser
链接导入实际代码如果在youtube api页面上很难找到,我在youtube api页面的示例代码中使用它,它从oauth2client
从oauth2client.tools导入argparser
链接,如果在youtube api页面上很难找到100%有效的实际代码。非常感谢你!我刚开始琢磨如何显示帮助/用法。
-h
是通常的
help
命令行。但您也可以使用
argparser.print\u help()
argparser.print\u用法
来显示用于调试的内容。有时我也会打印
argparser.\u actions
以查看所有的操作都已定义。这100%有效。非常感谢你!我刚开始琢磨如何显示帮助/用法。
-h
是通常的
help
命令行。但您也可以使用
argparser.print\u help()
argparser.print\u用法
来显示用于调试的内容。有时我还会打印
argparser.\u actions
以查看所有的操作都已定义。