英文:
Argument's name shadows keyword in module argparse python
问题
当我尝试使用 argparse.ArgumentParser.parse_args() 中的标志 "--from" 获取参数时,出现错误。IDE 表示 "from" 是一个导入语句,代码是无法执行的:
parser = argparse.ArgumentParser(prog='cache_wiki.py',
description='Find shortest path between links')
parser.add_argument('--from', required=True, help='page to start search with')
args = parser.parse_args()
print(args.from)
使用其他名称是可以的:
parser = argparse.ArgumentParser(prog='cache_wiki.py',
description='Find shortest path between links')
parser.add_argument('--f', required=True, help='page to start search with')
args = parser.parse_args()
print(args.f)
但我真的需要使用标志 "--from"。
英文:
When I try to get argument with flag "--from" from argparse.ArgumentParser.parse_args() an error occurs. IDE says that "from" is import statement and the code is unreachable:
parser = argparse.ArgumentParser(prog='cache_wiki.py',
description='Find shortest path between links')
parser.add_argument('--from', required=True, help='page to start search with')
args = parser.parse_args()
print(args.from)
It is ok with another name:
parser = argparse.ArgumentParser(prog='cache_wiki.py',
description='Find shortest path between links')
parser.add_argument('--f', required=True, help='page to start search with')
args = parser.parse_args()
print(args.f)
but I really need to use flag "--from".
答案1
得分: 3
只要忽略IDE即可。确实,你不能使用 args.from
,但这只是一个语法限制。你仍然可以通过例如 getattr(args, 'from')
来访问属性。
你还可以覆盖默认的目标名称,这样你就可以使用选项 --from
,但设置一个不同的属性:
...
parser.add_argument('--from',
required=True,
dest='from_',
help='page to start search with')
args = p.parse_args(['--from', 'foo'])
assert args.from_ == 'foo'
英文:
I would ignore the IDE here. True, you cannot use args.from
, but that's just a syntactic limitation. You can still access the attribute using, for example, getattr(args, 'from')
.
You can also override the default destination name so that you can use the option --from
, but set a different attribute:
...
parser.add_argument('--from',
required=True,
dest='from_',
help='page to start search with')
args = p.parse_args(['--from', 'foo'])
assert args.from_ == 'foo'
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论