变长参数
Variable length arguments
我正在使用 argparse
module 创建一个 python 程序,我想允许该程序使用一个参数或两个参数。
我是什么意思?好吧,我正在为 download/decode MMS 消息创建一个程序,我希望用户能够提供 phone 号码和 MMS-Transaction-ID 来下载数据,或者从他们的系统中提供文件已下载的彩信数据。
我想要的是这样的,您可以在其中输入 2 个参数,或 1 个参数:
./mms.py (phone mmsid | file)
注意:phone
将是一个 phone 数字(如 15555555555
),mmsid
一个字符串(MMS-Transaction-ID)和file
用户电脑上的一个文件
argparse
可以吗?我希望我可以使用 add_mutually_exclusive_group
,但那似乎并没有达到我想要的效果。
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('phone', help='Phone number')
group.add_argument('mmsid', help='MMS-Transaction-ID to download')
group.add_argument('file', help='MMS binary file to read')
这给出了错误(删除 required=True
给出了同样的错误):
ValueError: mutually exclusive arguments must be optional
看起来它要我使用 --phone
而不是 phone
:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--phone', help='Phone number')
group.add_argument('--mmsid', help='MMS-Transaction-ID to download')
group.add_argument('--file', help='MMS binary file to read')
当 运行 我的程序没有参数时,我看到:
error: one of the arguments --phone --mmsid --file is required
这更接近我想要的,但是我可以让 argparse
做 (--phone --msid) or (--file)
吗?
这有点超出了 argparse
的范围,因为第一个参数的 "type" 是事先不知道的。我会做类似
的事情
import argparse
p = argparse.ArgumentParser()
p.add_argument("file_or_phone", help="MMS File or phone number")
p.add_argument ("mmsid", nargs="?", help="MMS-Transaction-ID")
args = p.parse_args()
要确定 args.file_or_phone
是文件名还是 phone 数字,您需要检查 args.mmsid
是否是 None
.
我正在使用 argparse
module 创建一个 python 程序,我想允许该程序使用一个参数或两个参数。
我是什么意思?好吧,我正在为 download/decode MMS 消息创建一个程序,我希望用户能够提供 phone 号码和 MMS-Transaction-ID 来下载数据,或者从他们的系统中提供文件已下载的彩信数据。
我想要的是这样的,您可以在其中输入 2 个参数,或 1 个参数:
./mms.py (phone mmsid | file)
注意:phone
将是一个 phone 数字(如 15555555555
),mmsid
一个字符串(MMS-Transaction-ID)和file
用户电脑上的一个文件
argparse
可以吗?我希望我可以使用 add_mutually_exclusive_group
,但那似乎并没有达到我想要的效果。
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('phone', help='Phone number')
group.add_argument('mmsid', help='MMS-Transaction-ID to download')
group.add_argument('file', help='MMS binary file to read')
这给出了错误(删除 required=True
给出了同样的错误):
ValueError: mutually exclusive arguments must be optional
看起来它要我使用 --phone
而不是 phone
:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--phone', help='Phone number')
group.add_argument('--mmsid', help='MMS-Transaction-ID to download')
group.add_argument('--file', help='MMS binary file to read')
当 运行 我的程序没有参数时,我看到:
error: one of the arguments --phone --mmsid --file is required
这更接近我想要的,但是我可以让 argparse
做 (--phone --msid) or (--file)
吗?
这有点超出了 argparse
的范围,因为第一个参数的 "type" 是事先不知道的。我会做类似
import argparse
p = argparse.ArgumentParser()
p.add_argument("file_or_phone", help="MMS File or phone number")
p.add_argument ("mmsid", nargs="?", help="MMS-Transaction-ID")
args = p.parse_args()
要确定 args.file_or_phone
是文件名还是 phone 数字,您需要检查 args.mmsid
是否是 None
.