argparse接受整数和字符串?

时间:2019-07-26 23:38:57

标签: python python-2.7 command-line-arguments argparse

对此不熟悉,请原谅。是否有可能(如果可以,怎么办)从包含数字和字母的用户那里接收命令?当用户输入“ ./test -selectport af15”之类的内容时,我想从用户那里获取3个参数(第一个参数始终为一个字母,第二个参数始终为一个字母,第三个参数应为1至3位数字(1-999)任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

我想这样的事情会做:

import sys

if __name__ == "__main__":
    user_input = sys.argv[2]
    first_letter = user_input[0]
    second_letter = user_input[1]
    third = user_input[2:]

    print(first_letter)
    print(second_letter)
    print(third)

输出:

python test.py -selectport af15
a
f
15

当然,您需要自行处理特殊情况,可能的用户输入错误等。在这里,我假设输入始终正确。从这里开始并详细说明。

答案 1 :(得分:0)

我认为可能会使您感到困惑的是argparse文档告诉您将agrument视为类型的方式。如果对此不熟悉,可能会使它看起来比实际更复杂。另一个答案包括方法,但要明确回答您的问题:

在argparse中将整个内容作为字符串处理,解析出所需的三个部分,然后将最后一个部分自己转换为int。

应该带你去

#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-selectport', help='Will parse this string into a few items')

args = parser.parse_args()

first = args.selectport[0]
second = args.selectport[1]
last = int(args.selectport[2:])

print(f"{first} {second} {last}")