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` 但没有用。
有什么帮助吗?
当您使用 type
或 nargs
时,解析器需要至少一个参数。请改用 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_false
将 args.list
参数默认设置为 True。
我正在编写一个程序,我正在尝试使用 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` 但没有用。
有什么帮助吗?
当您使用 type
或 nargs
时,解析器需要至少一个参数。请改用 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_false
将 args.list
参数默认设置为 True。