详解用Python处理Args的3种方法
1. sys 模块
Python 中的 sys 模块具有 argv 功能。当通过终端触发 main.py 的执行时,此功能将返回提供给 main.py 的所有命令行参数的列表。除了其他参数之外,返回列表中的第一个元素是 main.py 的路径。
考虑下面的 main.py 示例
import syslist_of_arguments = sys.argvprint(list_of_args[0]) print(list_of_args[1]) print(list_of_args[2]) print(list_of_args[3])
用如下方式在命令行触发 main.py :
python main.py first_arg "[second_arg]" "{\"arg\": 3}"
输出的结果如下所示:
test.py2.带有一个大参数的 sys 模块 这是一种为 Python 代码提供参数的简单而强大的方法。你不需要提供按空格分隔的大量参数,而是提供一个单一的“大”参数。这个大参数是一个字符串字典,其中 dict-keys 表示参数名称,dict-value 表示相应的值。
first_arg
[second_arg]
{"arg": 3}
考虑下面的 main.py 示例
import sysimport astraw_arguments = sys.argv[1] print(raw_arguments)arguments = ast.literal_eval(raw_arguments) print(arguments['name']) # Johnprint(arguments['surname']) # Doeprint(arguments['age']) # 22
用如下方式在命令行触发 main.py :
python main.py "{\"name\": \"John\", \"surname\": \"Doe\", \"age\": 22}"
输出的结果如下所示:
{"name": "John", "surname": "Doe", "age": 22}3. argparse 模块 如果想为你的应用程序提供适当的命令行界面,则 argparse 是你需要的模块。
John
Doe
22
这是一个全面的模块,提供了现成的参数解析、帮助消息和误用参数时自动抛错。
要充分利用 argparse 提供的功能,需要花费一些时间来掌握。现在先然我们来考虑以下 main.py 示例:
import argparseparser = argparse.ArgumentParser(description='Personal information')parser.add_argument('--name', dest='name', type=str, help='Name of the candidate')parser.add_argument('--surname', dest='surname', type=str, help='Surname of the candidate')parser.add_argument('--age', dest='age', type=int, help='Age of the candidate')args = parser.parse_args()print(args.name)print(args.surname)print(args.age)
在初始化 ArgumentParses 的对象之后,我们使用 add_argument 函数添加所有预期的参数。该函数接收许多参数,其中包括参数名、目标变量、预期的数据类型、要显示的帮助消息等。
用如下方式在命令行触发 main.py :
python main.py --name John --surname Doe --age 22
输出的结果如下所示:
John我们这里只是简单介绍一下,要了解更多关于这个模块的信息,可以查看这个链接https://docs.python.org/2/library/argparse.html。
Doe
22
总结 很多时候,你需要将参数传递给 Python 脚本。Python通过 sys 模块提供对这些参数的访问。你可以直接访问argv功能并自己处理参数解析,也可以将其他模块用作argparse来完成。对于小编来说,通常习惯使用sys模块,适合你的才是最好的~
【详解用Python处理Args的3种方法】到此这篇关于详解用Python处理Args的3种方法的文章就介绍到这了,更多相关Python处理Args内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 涉毒患者(新诗)
- 参保人员因患病来不及到指定的医疗机构就医,能否报销医疗费用()
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息