本文总结从外部传入 python 程序的参数的集中方法。
Updated: 2022 / 9 / 25
总览
常见的是 sys.argv 还有 argparse 。 前者功能比较简单,能提供的有限;后者不是内置的,需要安装,但是功能确实比较强大。
sys
argparse
参考这里 ’
此处先给出一个简单的代码示例,如下:
parser = argparse.ArgumentParser(
prog='WriteJSON',
description='Writing the input json data to the corresponding .xls template file and save'
)
parser.add_argument("-i", "--id", type=str, default="01", help='experiment type number')
parser.add_argument("-c", "--continue_transfer", type=int, default=0,
help="whether to continue to transfer data. value=0 don't transfer, else continue transfer")
parser.add_argument("-d", "--data", type=str, default=None, help='data with json format')
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
args = parser.parse_args()
id = args.id
continue_transfer = args.continue_transfer
data = args.data
print('id', id)
print('continue_transfer', continue_transfer)
print('data', data)
运行效果如下:
(base) PyinstallerTest % python script.py -h
usage: WriteJSON [-h] [-i ID] [-c CONTINUE_TRANSFER] [-d DATA] [--version]
Writing the input json data to the corresponding .xls template file and save
optional arguments:
-h, --help show this help message and exit
-i ID, --id ID experiment type number
-c CONTINUE_TRANSFER, --continue_transfer CONTINUE_TRANSFER
whether to continue to transfer data. value=0 don't transfer, else continue transfer
-d DATA, --data DATA data with json format
--version show program's version number and exit
(base) PyinstallerTest % python script.py
id 01
continue_transfer 0
data None
(base) PyinstallerTest % python script.py -i=04
id 04
continue_transfer 0
data None
(base) PyinstallerTest % python script.py --id=04
id 04
continue_transfer 0
data None
(base) PyinstallerTest % python script.py -c=5
id 01
continue_transfer 5
data None
(base) PyinstallerTest % python script.py -d="whatever"
id 01
continue_transfer 0
data whatever
(base) PyinstallerTest % python script.py --version
WriteJSON 1.0
使用 argparse 的第一步是创建一个 ArgumentParser 对象 parser ,ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。 prog 参数内的名称是程序的名字,如未提前给出则按 python 脚本的名称为默认值。 description 参数内的字符串内容是在参数帮助文档之前显示的文本,
方法如下:
方法 | 作用 |
---|
add_argument() | 给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储和使用。 | | 可能你会发现有的参数后面都会跟上一个同名参数的大写形式,根据官方文档可知,只需要在每个参数里设置 metavar=' ' ,那个大写就会消失。 | | default 表示为该参数的默认值。 | | help 提供该参数作用的描述性信息。 | parse_args() | ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。在大多数情况下,这意味着一个简单的 Namespace 对象将从命令行解析出的属性构。在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数 |
参考链接
|