在python中传递命令行参数

时间:2017-09-21 15:51:01

标签: python

如何传递非位置的命令行参数。我只想传递可以分配给脚本中特定变量的参数。

2 个答案:

答案 0 :(得分:0)

您可以导入argparse。 :for Python 2.7

For python 3.6

你可以这样调用下面的脚本:

  

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。

答案 1 :(得分:0)

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函数中,第一个和第二个是你可以使用的变量,'generic'将有一个包含第三个和第四个等的列表。

键必须是有效的python变量,否则调用program会在调用main_program之前引发类型错误。