python - 解析命令行参数的最佳方法是什么?

解析 Python 命令行参数的最简单最简单和最灵活的方法或库是什么?

最佳答案

argparse是要走的路。以下是如何使用它的简短摘要:

1) 初始化

import argparse

# Instantiate the parser
parser = argparse.ArgumentParser(description='Optional app description')

2) 添加参数

# Required positional argument
parser.add_argument('pos_arg', type=int,
                    help='A required integer positional argument')

# Optional positional argument
parser.add_argument('opt_pos_arg', type=int, nargs='?',
                    help='An optional integer positional argument')

# Optional argument
parser.add_argument('--opt_arg', type=int,
                    help='An optional integer argument')

# Switch
parser.add_argument('--switch', action='store_true',
                    help='A boolean switch')

3) 解析

args = parser.parse_args()

4) 访问

print("Argument values:")
print(args.pos_arg)
print(args.opt_pos_arg)
print(args.opt_arg)
print(args.switch)

5) 检查值

if args.pos_arg > 10:
    parser.error("pos_arg cannot be larger than 10")

用法

正确使用:

$ ./app 1 2 --opt_arg 3 --switch

Argument values:
1
2
3
True

参数不正确:

$ ./app foo 2 --opt_arg 3 --switch
usage: convert [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg]
app: error: argument pos_arg: invalid int value: 'foo'

$ ./app 11 2 --opt_arg 3
Argument values:
11
2
3
False
usage: app [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg]
convert: error: pos_arg cannot be larger than 10

全面帮助:

$ ./app -h

usage: app [-h] [--opt_arg OPT_ARG] [--switch] pos_arg [opt_pos_arg]

Optional app description

positional arguments:
  pos_arg            A required integer positional argument
  opt_pos_arg        An optional integer positional argument

optional arguments:
  -h, --help         show this help message and exit
  --opt_arg OPT_ARG  An optional integer argument
  --switch           A boolean switch

https://stackoverflow.com/questions/20063/

相关文章:

python - 如何在 Windows 中同时安装 Python 2.x 和 Python 3.x

linux - Shell 命令到 tar 目录,不包括某些文件/文件夹

python - 为什么列表没有像字典一样的安全 "get"方法?

linux - 给定两个目录树,我如何找出哪些文件因内容而异?

linux - 如何使用 SSH 从服务器下载文件?

python - 一个干净、轻量级的 Python 扭曲替代品?

linux - 如何在终端中获取当前日期和时间并在终端中为其设置自定义命令?

python - Pandas 根据其他列的值创建新列/逐行应用多列的函数

bash - 为什么我不能在脚本中使用 "cd"更改目录?

linux - 使用 ls 列出目录及其总大小