Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse:参数太少_Python_Argparse - Fatal编程技术网

Python argparse:参数太少

Python argparse:参数太少,python,argparse,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():

我正在尝试使用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'
知道我哪里出错了吗


谢谢

使用以下语法时:

parser.add_argument("csv")
parser.add_argument("dryrun")
您将这些作为位置参数(必需)添加。只有带前导破折号或两个破折号的参数是可选的

见:

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

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

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

使用
python my_script.py csv\u name.csv--dry run
调用脚本将导致
args.dry_run
True
。不放置该选项将导致其为
False

,因此现在我正在执行类似于:parser.add\u参数(“--dryrun”)的操作。不幸的是,现在我得到了:用法:my_script.py[-h][--dryrun-dryrun]csv my_script.py:error:argument--dryrun:需要一个参数
parser.add_argument('--dry-run', action='store_true')