我是靠谱客的博主 聪慧小伙,最近开发中收集的这篇文章主要介绍【Python】【专题】(argparse)使用命令行参数(选项)解析(注:本文不全面,仅记录本人够用的使用方式)Python 使用命令行参数(选项)解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python 使用命令行参数(选项)解析

Overview

  • Python 使用命令行参数(选项)解析
    • 说在前面的话
    • 实例:命令行参数指定启动哪种浏览器
      • a) 使用一个全局变量指示使用哪种浏览器
      • b) 使用该全局变量启动浏览器的代码
      • c) 解析命令行参数
      • d) 完整代码

说在前面的话

这篇文章不是详细的 argparse 库的使用教程(文档),仅仅是本人使用 argparse 的 一些 一个实例。
相当于开发笔记,仅供参考。

另外,从 Python 的官方文档看 argparse 库的使用,个人觉得是目前发现的官方文档写的最糟糕的一个库。
不过我看的 Python 官方文档也不算特别多,理论来说没有最差只有更差。

除此之外,像拓展内置类型的库(如 collections)或者其它组件都写的挺好的,在有了基础的时候,快速翻阅参考一下就可以使用。

实例:命令行参数指定启动哪种浏览器

这是使用 selenium 的一个例子,期望的命令行如下:

$ python demo.py --browser Chrome
## or
> Python demo.py --browser Edge
# Windows platform CMD

注意:本节下面的代码假设已经配置安装好了控制浏览器自动化测试的驱动。

所以不会修改 PATH (or executable_path)。

a) 使用一个全局变量指示使用哪种浏览器

因为命令行解析的行为一般是在顶层 .py 文件的 if __name__=="__main__" 中做的。
所以为了简单起见,在那里解析完命令行参数之后,使用一个全局变量绑定解析后的参数值,这样在某个函数中需要启动指定类型的浏览器时,就能使用这个全局变量。

#!/usr/bin/env python3
from selenium import webdriver
g_which_browser = None
[...]

b) 使用该全局变量启动浏览器的代码

[...]
g_which_browser = "Chrome"
def main():
_f = getattr(webdriver, g_which_browser)
browser = _f()
browser.get("https://www.baidu.com")
browser.quit
if __name__ == "__main__":
main()

当然,正如这小节标题的一样,这不是完整的实现代码,这里只是演示一下如何使用这个全局变量指示的浏览器来启动浏览器的代码。
[...] 表示省略,因为那部分代码在上面已经写过了。

另外,line 3 的 g_which_browser 当然不是又从 None 改成了 “Chrome”;

这里只是方便理解,并且现在的代码就可以手动修改 g_which_browser 的值来测试 main() 中的代码正确与否;

一次只实现一步。

c) 解析命令行参数

[...]
g_which_browser = None
[...]
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Specific Browser Type")
parser.add_argument('-b', "--browser", dest='browser', required=True, action='store',
choices={'Chrome', 'Edge', 'Firefox'},
# default='Chrome'
help="Chrome or Edge(Windows platform) or Firefox")
args = parser.parse_args()
if __debug__:
print("type(args = parser.parse_args()): {!r}".format(type(args)))
print("args: ", args)
print("args.browser: ", args.browser)
g_which_browser = args.browser
main()

required=True 签字要求必须包含这个参数选项。
action='store' 参数表示接受一个单独值并将其存储为一个字符串。
dest='browser' 这个用来支持 args.browser. 运算。
choices={'Chrome', 'Edge', 'Firefox'} choices 实现了比较输入,确保输入值在指定可选值之中。
default='Chrome' default 我没有测试,因为我不太期望有一个默认值,如果想要的话,你可以去掉注释试验一下。

d) 完整代码

#!/usr/bin/env python3
from selenium import webdriver
g_which_browser = None
def main():
_f = getattr(webdriver, g_which_browser)
browser = _f()
browser.get("https://www.baidu.com")
browser.quit
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Specific Browser Type")
parser.add_argument('-b', "--browser", dest='browser', required=True, action='store',
choices={'Chrome', 'Edge', 'Firefox'},
# default='Chrome'
help="Chrome or Edge(Windows platform) or Firefox")
args = parser.parse_args()
if __debug__:
print("type(args = parser.parse_args()): {!r}".format(type(args)))
print("args: ", args)
print("args.browser: ", args.browser)
g_which_browser = args.browser
main()

最后

以上就是聪慧小伙为你收集整理的【Python】【专题】(argparse)使用命令行参数(选项)解析(注:本文不全面,仅记录本人够用的使用方式)Python 使用命令行参数(选项)解析的全部内容,希望文章能够帮你解决【Python】【专题】(argparse)使用命令行参数(选项)解析(注:本文不全面,仅记录本人够用的使用方式)Python 使用命令行参数(选项)解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部