以连字符作为字符串

时间:2016-12-12 16:14:35

标签: python python-3.x arguments argparse

我使用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"

0 个答案:

没有答案