可变长度参数

2024-09-28 13:10:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用^{} module创建一个python程序,我希望允许程序接受一个参数或两个参数。在

我什么意思?嗯,我正在创建一个程序来下载/解码MMS消息,我希望用户能够提供电话号码和MMS事务ID来下载数据,或者从已经下载的MMS数据系统中提供一个文件。在

我想要的是这样的,你可以输入2个参数,也可以输入1个参数:

./mms.py (phone mmsid | file)

注意:phone将是一个电话号码(如15555555555)、mmsid一个字符串(MMS事务ID)和file用户计算机上的文件

argparse可以吗?我希望我可以使用add_mutually_exclusive_group,但这似乎没有达到我想要的效果。在

^{pr2}$

这会产生错误(删除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)?在


Tags: 程序addid参数grouprequiredargparsehelp
1条回答
网友
1楼 · 发布于 2024-09-28 13:10:53

这稍微超出了argparse所能做的范围,因为第一个参数的“类型”并不提前知道。我会做一些类似的事情

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是作为文件名还是电话号码,需要检查args.mmsid是否是{}。在

相关问题 更多 >

    热门问题