我使用argparse
为我的python脚本设置参数。最后一个参数是" ID号"它可以是字母数字字符和连字符的任意组合。
注意:该程序是MMS消息的下载器/解码器和" ID"参数由细胞网络提供,因此我无法改变它的含义。
我遇到了一个问题,如果ID以连字符开头,argparse将其读作多个参数而不是字符串。
以下是我的代码的argparse
部分:
version = "0.4 alpha"
parser = argparse.ArgumentParser(
description="MMS Viewer v{0}: An MMS Downloader and Decoder".format(version),
epilog="https://github.com/NTICompass/mms-viewer"
)
parser.add_argument('-V', '--version', action='version', version=version)
parser.add_argument("file_or_phone", help="MMS File or phone number")
parser.add_argument("mmsid", nargs="?", help="MMS-Transaction-ID")
parser.add_argument('--debug', help="Print debugging info", action="store_true")
group = parser.add_mutually_exclusive_group()
group.add_argument('-x', '--extract', help="Extract image file(s)", action="store_true")
group.add_argument('-X', '--extract-original', help="Extract original image file(s) without using PIL", action="store_true")
args = parser.parse_args()
我这样运行程序./main.py 15555555555 abc123xyz
(您也可以将其作为./main.py file.bin
运行。)
当最后一个参数以连字符开头时出现问题,如下所示:
./main.py 15555555555 -mTkKkr5e
似乎argparse
正在阅读" -mTkKkr5e"作为多个不同的标志,从而给出错误:
usage: main.py [-h] [-V] [-p] [--debug] [-d | -x | -X] file_or_phone [mmsid]
main.py: error: unrecognized arguments: -mTkKkr5e
我如何解决这个问题,以便python / argparse会给我最后一个参数作为字符串"-mTkKkr5e"
?