我正在编写一个使用 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
然后我可以这样使用 OLDFILE 和 NEWFILE 值吗?
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/