Python argparse:参数过少

4

我正在尝试在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个回答

6
当您使用以下语法时:
parser.add_argument("csv")
parser.add_argument("dryrun")

你正在将这些参数作为位置参数——必需参数添加。只有带有一个或两个前导破折号的参数是可选的。
请参阅此处的文档

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

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

现在我正在做类似这样的事情:parser.add_argument("--dryrun")。不幸的是,现在我得到了以下错误信息:usage: my_script.py [-h] [--dryrun DRYRUN] csv my_script.py: error: argument --dryrun: expected one argument - anon_swe

2
为了添加一个可选的--dry-run参数,您可以使用以下代码片段:
parser.add_argument('--dry-run', action='store_true')

使用 python my_script.py csv_name.csv --dry-run 调用您的脚本将导致 args.dry_run 的值为 True。不加选项将导致其值为 False


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接