如何解决python获取特定的arg
我有一个带有初始值的程序:
SIZE = 100
NB = 100
WIDTH_CANVAS = 150
[...]
但是我想允许用户从终端更新这些值:
python3 main.py NB=10
python3 main.py NB=10 WIDTH_CANVAS=200 SIZE=50
或没有任何更改:
python3 main.py
所以我尝试了类似的事情:
import sys
SIZE = sys.argv[1]
NB = sys.argv[2]
WIDTH_CANVAS = sys.argv[3]
但问题是:例如,如果他们不想指定NB
怎么办?
解决方法
如果您想完全使用该语法,则可以使用默认设置来设置字典。
value = {'NB': 100,'SIZE': 100,'WIDTH_CANVAS': 150}
for arg in sys.argv[1:]:
if '=' in arg:
k,v = arg.split('=',1)
if k not in value:
raise KeyError('Invalid command-line argument %s' % k)
value[k] = v
else:
raise MaybeGripe('Some other error here?')
现在继续使用value['SIZE']
,就像以前使用裸SIZE
一样,等等。
如评论中所建议,更常见的安排是拥有命令行选项,并使用标准的ArgParse module来解析它们。也许您的语法会更像
python main.py --size 25 --canvas-width 100
对于大多数用户而言,这将更加熟悉并且分散他们的注意力。
, argparse
正是您需要的。这是一个简短的示例(https://docs.python.org/3/library/argparse.html):
import argparse
SIZE = 100
NB = 100
parser = argparse.ArgumentParser()
parser.add_argument('--NB',dest='NB',type=int,default=NB)
parser.add_argument('--SIZE',dest='SIZE',default=SIZE)
args = parser.parse_args()
print(args.SIZE)
print(args.NB)
因此,运行python prog.py --SIZE 3
会得到:
3
100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。