一、sys模块
Python命令行参数可以使用内部模块sys.argv进行访问。该模块返回值是包含所有命令行参数的列表。
通过sys.argv返回列表中,索引0为当前脚本名信息(包含路径),索引1,2,3…依次对应这用户命令行参数arg1,arg2,arg3…
示例程序:
#!/bin/python3
import sys
def main():
args = sys.argv
print(len(args))
print(args)
print(args[1], args[2], args[3])
if __name__ == "__main__":
main()
运行:
python test_sys.py arg1 arg2 agr3 arg4 arg5
输出:
6
['test_sys.py', 'args1', 'args2', 'args3', 'args4', 'args5']
args1 args2 args3
对于简单的命令行参数,可以使用sys.argv进行命令行参数获取及处理,对于较复杂的命令行参数,推荐使用argparse模块进行处理。
二、argparse模块
1、模块介绍
argparse为python内置库文件,主要用于命令行传入参数的格式化处理。使用argparse模块可以轻松编写用户友好的命令行界面。
官方文档介绍:argparse — Parser for command-line options, arguments and sub-commands
2、方法参数
(1)Creating a parser
parser = argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True)
- descripition:在参数帮助前,展示的文本信息。
其他通常使用默认值。
(2) Adding arguments
parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
- name or flags:编辑一个可选的字符串列表名,如-h,-help。
- action:指定命令行参数的操作类型。
- nargs:应该使用的命令行参数的数量。
- const:对一些action和nargs选项的常量值请求。
- default:如果命令行中不存在该参数而使用的默认参数值。
- type:命令行参数应该被转换为的数据类型。
- choices:参数允许值的容器。
- required:是否可以省略命令行选项(仅可选)。
- help:对于当前参数作用的简要描述。
- metavar:在usage信息中参数的名字。
- dest:要添加到parse_args()返回的对象的属性名称。
(3)Parsing arguments
args = parser.parse_args(args=None, namespace=None)
- args:待解析字符串列表,默认为sys.argv,通常使用默认值。
其他通常使用默认值。
3、示例程序
#!/bin/python3
import argparse
def argv_parse():
parser = argparse.ArgumentParser(description="Test argparse")
parser.add_argument("-a1", "--args1", default="default_args1")
parser.add_argument("-a2", "--args2", default="default_args2")
parser.add_argument("-a3", "--args3", default="default_args3")
parser.add_argument("-a4", "--args4", default="default_args4")
parser.add_argument("-a5", "--args5", default="default_args5")
args = parser.parse_args()
return args
def main():
args = argv_parse()
print(args)
print(args.args1, args.args2, args.args3)
if __name__ == "__main__":
main()
运行
python test_sys.py -a1 args1 --args2 args2
输出
Namespace(args1='args1', args2='args2', args3='default_args3', args4='default_args4', args5='default_args5')
args1 args2 default_args3