草庐IT

Python argparse : name parameters

coder 2023-05-24 原文

我正在编写一个使用 argparse 的程序,用于解析我需要的一些参数。

现在我有这个:

parser.add_argument('--rename', type=str, nargs=2, help='some help')

当我运行这个脚本时,我看到了这个:

optional arguments:
  -h, --help            show this help message and exit
  --rename RENAME RENAME
                        some help

如何以帮助“页面”显示的方式更改我的代码:

--rename OLDFILE NEWFILE

然后我可以这样使用 OLDFILENEWFILE 值吗?

args.rename.oldfile
args.rename.newfile

最佳答案

如果你设置 metavar=('OLDFILE', 'NEWFILE'):

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--rename', type=str, nargs=2, help='some help',
                    metavar=('OLDFILE', 'NEWFILE'))
args = parser.parse_args()
print(args)

然后 test.py -h 产生

usage: test.py [-h] [--rename OLDFILE NEWFILE]

optional arguments:
  -h, --help            show this help message and exit
  --rename OLDFILE NEWFILE
                        some help

然后您可以使用

访问参数
oldfile, newfile = args.rename

如果你真的想用 args.rename.oldfile 访问旧文件 您可以设置自定义操作:

import argparse
class RenameAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        setattr(namespace, self.dest,
                argparse.Namespace(
                    **dict(zip(('oldfile', 'newfile'),
                               values))))

parser = argparse.ArgumentParser()
parser.add_argument('--rename', type=str, nargs=2, help='some help',
                    metavar=('OLDFILE', 'NEWFILE'),
                    action=RenameAction)
args = parser.parse_args()

print(args.rename.oldfile)

但额外的代码在我看来并不值得。

关于Python argparse : name parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18376983/

有关Python argparse : name parameters的更多相关文章

随机推荐