argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口。通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
使用方法主要包含一下三步骤:
1、创建一个解析器——创建 ArgumentParser() 对象
2、添加参数——调用 add_argument() 方法添加参数
3、解析参数——使用 parse_args() 解析添加的参数
import argparse
parser = argparse.ArgumentParser(description='test')
parser.add_argument('--sparse', action='store_true', default=False, help='GAT with sparse version or not.')
parser.add_argument('--seed', type=int, default=72, help='Random seed.')
parser.add_argument('--epochs', type=int, default=10000, help='Number of epochs to train.')
args = parser.parse_args()
常见问题
action·- 命令行遇到参数时的动作,默认值是 store。
直接运行python test.py,输出结果False
运行python test.py --sparse,输出结果True
也就是说,action=‘store_true’,只要运行时该变量有传参就将该变量设为True。(需要手动debug调试的,可以在add_add_argument()增加参数时,更改其中的相关属性)
如果你定义参数xxx时,没有用–指定,那么该参数为需要在命令行内手动指定。此时即使通过default设置默认参数,也还是会报错。
args.max_episode_len,也没报错,请问这个下划线_和-的区别在哪里呢?
没啥区别,在这里表示同一个意思,-对应_,代码里写的不一样或者都改成一样的都可以,如–max_episode_len,写成–max-episode-len依然可以被调用。
更细致的文档可以参考这位大佬:argparse 模块