parser.add_argument支持多种类型

时间:2018-05-16 08:54:27

标签: python parsing

我正在使用我的解析器

 parser.add_argument('owner_type', type=int, required=False, location=location)

我希望能够在该字段int中同时发送strowner_type。 有没有办法做到这一点?

没有在文档中找到任何内容。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Demo.')
    parser.add_argument('-e', dest='owner_type', help="help text")
    args = parser.parse_args()
    owner_type = args.owner_type

    if owner_type is not None and owner_type.isdigit():
        owner_type = int(owner_type)

    print(type(owner_type))

这只适用于int和字符串。如果你需要处理浮动,那么你需要以不同的方式处理这种情况。

输出:

~/Desktop$ python test.py -e 1
<type 'int'>
~/Desktop$ python test.py -e test
<type 'str'>
~/Desktop$ python test.py 
<type 'NoneType'>

答案 1 :(得分:0)

我不是那种可能的事情。但是你想做什么? 你不能传递一个字符串然后再做一个

try:
 owner_type=int(args.owner_type)
 #it's a int
except:
 owner_type = args.owner_type
 #it's a string