带连字符的 Python argparse 参数

标签 python argparse

如何使用 python argparse 模块解析带 HYPHEN 的参数?

MWE

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-idir','--input-dir')
args = parser.parse_args()

# My attempts
idir = args.idir
idir = args.input-dir
idir = args['input-dir']

print(args)

注意:当然我可以使用下划线 input_dir 但我正在寻找一种用连字符解析参数的方法,例如输入目录

最佳答案

我推荐调试打印:

import argparse    
parser = argparse.ArgumentParser()
parser.add_argument('-idir','--input-dir')
args = parser.parse_args()
print(args)

这显示了实际的属性名称:

1156:~/mypy$ python3 stack63329421.py 
Namespace(input_dir=None)
1157:~/mypy$ python3 stack63329421.py -h
usage: stack63329421.py [-h] [-idir INPUT_DIR]

optional arguments:
  -h, --help            show this help message and exit
  -idir INPUT_DIR, --input-dir INPUT_DIR
1157:~/mypy$ python3 stack63329421.py --input-dir foobar
Namespace(input_dir='foobar')

现在我可以添加如下打印内容:

print(args.input_dir)                  # works with a valid attribute name
print(getattr(args, 'input_dir'))      # works with anything

并得到:

1158:~/mypy$ python3 stack63329421.py --input-dir foobar
Namespace(input_dir='foobar')
foobar
foobar

如果您不喜欢该帮助,请添加元变量:

..., metavar='INPUT-DIR'

1158:~/mypy$ python3 stack63329421.py -h
usage: stack63329421.py [-h] [-idir INPUT-DIR]

optional arguments:
  -h, --help            show this help message and exit
  -idir INPUT-DIR, --input-dir INPUT-DIR

关于带连字符的 Python argparse 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63329421/

相关文章:

python - argparse add_argument 别名

python - 我想让我的不和谐机器人每小时加入一次语音聊天

Python 和 Pygame : Ball collision with interior of circle

python - 我无法从集合中删除日期时间对象?

python-2.7 - Python argparse 不带字符 -

python - 禁用 argparse 中类似参数的连接和缩写

python - urllib2.urlopen 无法使用我的普通 DNS 服务器查找主机名;挖掘等可以

python - 如何使用 Pandas 从 DataFrame 或 np.array 中的列条目创建字典

python - argparse.REMAINDER 改变位置参数的行为

Python3 Argparse 尝试读取文件并计算字母