我想我不理解 python的argparse基本知识.

我正在尝试将Google YouTube API用于python脚本,但我不了解如何在不使用命令行的情况下将值传递给脚本.

例如,here是API的示例. github和其他地方的示例将此示例显示为从命令行调用,在调用脚本时从该命令行传递argparse值.

我不想使用命令行.我正在构建一个使用装饰器获取用户登录凭据的应用程序,当该用户想要上传到他们的YouTube帐户时,他们会提交一个表单,然后调用此脚本并将argparse值传递给它.

如何从另一个python脚本将值传递给argparser(请参阅下面的YouTube上传API脚本中的部分代码)?

if __name__ == '__main__':
    argparser.add_argument("--file",required=True,help="Video file to upload")
    argparser.add_argument("--title",help="Video title",default="Test Title")
    argparser.add_argument("--description",help="Video description",default="Test Description")
    argparser.add_argument("--category",default="22",help="Numeric video category. " +
            "See https://developers.google.com/youtube/v3/docs/videoCategories/list")
    argparser.add_argument("--keywords",help="Video keywords,comma separated",default="")
    argparser.add_argument("--privacyStatus",choices=VALID_PRIVACY_STATUSES,default=VALID_PRIVACY_STATUSES[0],help="Video privacy status.")
    args = argparser.parse_args()

    if not os.path.exists(args.file):
        exit("Please specify a valid file using the --file= parameter.")

    youtube = get_authenticated_service(args)
    try:
        initialize_upload(youtube,args)
    except HttpError,e:
        print "An HTTP error %d occurred:\n%s" % (e.resp.status,e.content)

编辑:每个请求,这里是我使用标准方法初始化字典或使用argparse创建字典的400错误的回溯.我以为我是因为形成错误的参数而得到这个,但也许不是:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py",line 1535,in __call__
    rv = self.handle_exception(request,response,e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py",line 1529,in __call__
    rv = self.router.dispatch(request,response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py",line 1278,in default_dispatcher
    return route.handler_adapter(request,line 1102,in __call__
    return handler.dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py",line 572,in dispatch
    return self.handle_exception(e,self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py",line 570,in dispatch
    return method(*args,**kwargs)
  File "C:\Users\...\testapp\oauth2client\appengine.py",line 796,in setup_oauth
    resp = method(request_handler,*args,**kwargs)
  File "C:\Users\...\testapp\testapp.py",line 116,in get
    resumable_upload(insert_request)
  File "C:\Users\...\testapp\testapp.py",line 183,in resumable_upload
    status,response = insert_request.next_chunk()
  File "C:\Users\...\testapp\oauth2client\util.py",line 129,in positional_wrapper
    return wrapped(*args,**kwargs)
  File "C:\Users\...\testapp\apiclient\http.py",line 874,in next_chunk
    return self._process_response(resp,content)
  File "C:\Users\...\testapp\apiclient\http.py",line 901,in _process_response
    raise HttpError(resp,content,uri=self.uri)
HttpError: <HttpError 400 when requesting https://www.googleapis.com/upload/youtube/v3/videos?alt=json&part=status%2Csnippet&uploadType=resumable returned "Bad Request">

解决方法

无论它是否是最好的方法,你真的要弄清楚.但是使用没有命令行的argparse很容易.我一直这样做,因为我有可以从命令行运行的批处理.或者也可以通过其他代码调用 – 这对于单元测试非常有用,如上所述.例如,argparse特别擅长默认参数.

从您的样本开始.

import argparse

argparser = argparse.ArgumentParser()
argparser.add_argument("--file",help="Video file to upload")
argparser.add_argument("--title",default="Test Title")
argparser.add_argument("--description",default="Test Description")
argparser.add_argument("--category",help="Numeric video category. " +
        "See https://developers.google.com/youtube/v3/docs/videoCategories/list")
argparser.add_argument("--keywords",default="")
VALID_PRIVACY_STATUSES = ("private","public")
argparser.add_argument("--privacyStatus",help="Video privacy status.")

#pass in any positional or required variables.. as strings in a list
#which corresponds to sys.argv[1:].  Not a string => arcane errors.
args = argparser.parse_args(["--file","myfile.avi"])

#you can populate other optional parameters,not just positionals/required
#args = argparser.parse_args(["--file","myfile.avi","--title","my title"])


print vars(args)

#modify them as you see fit,but no more validation is taking place
#so best to use parse_args.
args.privacyStatus = "some status not in choices - already parsed"
args.category = 42

print vars(args)

#proceed as before,the system doesn't care if it came from the command line or not
# youtube = get_authenticated_service(args)

输出:

{'category': '22','description': 'Test Description','title': 'Test Title','privacyStatus': 'private','file': 'myfile.avi','keywords': ''}
{'category': 42,'privacyStatus': 'some status not in choices - already parsed','keywords': ''}

python argparse – 传递值WITHOUT命令行的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 利用Node实现HTML5离线存储的方法

    这篇文章主要介绍了利用Node实现HTML5离线存储的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 详解如何通过H5(浏览器/WebView/其他)唤起本地app

    这篇文章主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. AmazeUI 折叠面板的实现代码

    这篇文章主要介绍了AmazeUI 折叠面板的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

    这篇文章主要介绍了HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  7. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. HTML5拍照和摄像机功能实战详解

    这篇文章主要介绍了HTML5拍照和摄像机功能实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部