0%

python命令行解析

现在最新的是argparser

首先,看个例子(这个例子是抄标准库的 🙃):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import argparse

# 首先,我们需要一个实例parser
parser = argparse.ArgumentParser(description='Process some integers.')

# 其次,我们需要添加若干个命令
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')

# 最后,就是解析命令了
args = parser.parse_args()

# 我喜欢这样去用,这样args2就是一个字典{}了
args2 = vars(parser.parse_args())

# 然后想引用里边的某个变量,就是这样
args2["integers"]

关于argparse.ArgumentParser(),一些常用的配置有:

  1. prog: 程序名字,在help字符串中可以用”%{prog}s”来引用
  2. usage: 默认生成就可以了
  3. description: 在显示命令之前展示的文字,比如一些描述程序是干嘛的
  4. epilog: 在显示命令之后展示的文字,比如说一些examples
  5. formatter_class: argparse.RawDescriptionHelpFormatter表示description和epilog都是格式化好了,不用程序自己去格式化了,argparse.RawTextHelpFormatter表示help和命令描述都是格式化好了,不用程序再去格式化了。

其他的自己去发掘吧

关于ArgumentParser.add_argument()有以下常用的东西:

  1. 添加一个位置命令:parser.add_argument("file")
  2. 添加一个短命令: parser.add_argument("-f")
  3. 添加一个长命令:parser.add_argument("--foo")
  4. 添加帮助:parser.add_argument("-f","--foo",help="这是帮助")
  5. 添加命令取值的提示:parser.add_argument("-f","--foo",metavar="FILE")
  6. 指定命令取值的个数:parser.add_argument("-f",nargs=2)
  7. 指定命令取值的类型:parser.add_argument("-f",type=int)
  8. 指定命令取值的默认值:parser.add_argument("-f",default="aa.txt")
  9. 指定命令取值的动作:parser.add_argument("-f",action="store_true"), store_true是存储为True
  10. 指定命令取值的存储位置:短命令默认是短命令的名字,比如第2个里的f,长命令默认是长明令的名字,比如第3个里的foo,长短都有就取长的,都不喜欢的话就这样指定parser.add_argument("-f","--foo",dest="foovalue"),就存到foovalue中了,以后使用就是args["foovalue"]
  11. 指定命令取值的范围:parser.add_argument("-f",choices=["a.txt","b.txt"])

好了,就是这些,用的愉快~