gpt4 book ai didi

python - 变长参数

转载 作者:太空狗 更新时间:2023-10-30 00:05:40 25 4
gpt4 key购买 nike

我正在使用 argparse module 创建一个 python 程序我想让程序接受一个参数或两个参数。

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

我想要的是这样的,您可以在其中输入 2 个参数或 1 个参数:

./mms.py (phone mmsid | file)

注意: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) 或 (--file) 吗?

最佳答案

这有点超出了 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 是否为 None.

关于python - 变长参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39752005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com