Python Argeparse 错误

Python Argeparse error

我正在编写一个程序,我正在尝试使用 argeparse 为程序 -l 创建一个参数,如果您使用 python myprog.py -l 它将列出我的亚马逊 s3 中的所有文件bucket.This 是我的代码:

from ConfigParser import RawConfigParser
from boto.s3.connection import S3Connection
from boto.s3.key import Key
import argparse

config = RawConfigParser()
config.read('tm/aws.cfg')
conn = S3Connection( config.get( 'prodAws', 'aws_access_key_id' ), config.get( 'prodAws', 'aws_secret_access_key' ) )
bucket = conn.get_bucket(config.get('prodAws', 'bucket'))

parser = argparse.ArgumentParser()
parser.add_argument("-l", "--list",type=str, help= "Lists content of bucket name specified" , default = config.get('prodAws', 'bucket') )
args = parser.parse_args()

if args.list:
    for key in bucket.list():
        print key.name

但是当我 运行 python myprog.py -l 它给了我一个 error: argument -l/--list: expected one argument 。它总是在 -l 之后需要一些字符串,即使它像 ksdjhjk 这样的乱码。我尝试将 nargs 添加到 parser.add_argument` 但没有用。

有什么帮助吗?

当您使用 typenargs 时,解析器需要至少一个参数。请改用 action="store_true"。没有 -l 键 args.list 将为 False。

parser.add_argument("-l", "--list", action="store_true", help="Lists content of bucket name specified" , default=config.get('prodAws', 'bucket'))

反之亦然,您可以使用 store_falseargs.list 参数默认设置为 True。