我试图在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'
知道我哪里出错了吗?
谢谢!
答案 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_run
为True
。不选择该选项将导致False