Python argparse:参数太少了

时间:2016-06-16 21:27:26

标签: python argparse

我试图在Python中使用argparse库。我想让用户做类似的事情:

python my_script.py csv_name.csv [--dryrun]

其中--dryrun是可选参数。

然后我让用户输入API密钥和密钥。当我运行我的代码时,我过去输入API和密钥,然后我得到:

usage: my_script.py [-h] csv dryrun
salesforceImporter.py: error: too few arguments

这是我的代码:

def main():
    api_key = getpass.getpass(prompt='Enter API Key: ')
    secret_key = getpass.getpass(prompt='Enter Secret Key: ')

    parser = argparse.ArgumentParser()
    parser.add_argument("csv")
    parser.add_argument("dryrun")
    args = parser.parse_args()

    validate_csv_name(args.csv)

    is_dry_run = args.dryrun == '--dryrun'

知道我哪里出错了吗?

谢谢!

2 个答案:

答案 0 :(得分:6)

使用以下语法时:

parser.add_argument("csv")
parser.add_argument("dryrun")

您将这些添加为位置 - 必需 - 参数。只有带前导短划线的参数是可选的。

请参阅the docs here

  

add_argument()方法必须知道是否需要可选参数(如-f或--foo)或位置参数(如文件名列表)。因此,传递给add_argument()的第一个参数必须是一系列标志或简单的参数名称。例如,可以创建一个可选参数,如:

>>> parser.add_argument('-f', '--foo')

答案 1 :(得分:2)

要添加可选的--dry-run参数,您可以使用以下代码段:

parser.add_argument('--dry-run', action='store_true')

使用python my_script.py csv_name.csv --dry-run调用您的脚本将导致args.dry_runTrue。不选择该选项将导致False