python 获取特定参数
python get specific 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
变量一样。
如评论中所建议,更常见的安排是具有 command-line 选项并使用标准 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', type=int, default=SIZE)
args = parser.parse_args()
print(args.SIZE)
print(args.NB)
所以 运行 python prog.py --SIZE 3
你会得到:
3
100
我得到了一个带有初始值的程序:
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
变量一样。
如评论中所建议,更常见的安排是具有 command-line 选项并使用标准 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', type=int, default=SIZE)
args = parser.parse_args()
print(args.SIZE)
print(args.NB)
所以 运行 python prog.py --SIZE 3
你会得到:
3
100