【发布时间】:2018-03-03 01:30:00
【问题描述】:
如何传递非位置的命令行参数。我只想传递可以分配给脚本中特定变量的参数。
【问题讨论】:
标签: python
如何传递非位置的命令行参数。我只想传递可以分配给脚本中特定变量的参数。
【问题讨论】:
标签: python
您可以导入 argparse。 :for Python 2.7
你可以像这样调用下面的脚本:
python myScript.py -showGivenNumber 42
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-showGivenNumber', action="store", dest="givennumber",)
myArgs = parser.parse_args()
print( myArgs.givennumber )
这里我们将 ArgumentParser 定义为解析器并添加参数 -showGivenNumber,我们将其打印出来。
【讨论】:
Bash 将参数读取为字符串,您可以编写字符串以包含识别信息。
$python3 myscript.py second:two first:one third fourth
那么脚本需要弄清楚什么去哪里了:
import sys
args={'generic':[]}
for arg in sys.argv[1:]: #gets the arguments from bash as a list of strings
if ':' not in arg:args['generic'].append(arg) #collects generic args
else: #contains an arbitrary key seperator
key,val=arg.split(':')
assert key not in args #raises an error if its going to overwrite a key
args[key]=val
main_program(**vars)
在 main_program 函数中,first 和 second 将是您可以使用的变量,“generic”将有一个包含第三个和第四个等的列表。
键必须是有效的python变量,否则调用程序会在调用main_program之前引发类型错误。
【讨论】: