Python-命令行参数处理

一、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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ftswsfb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值