argparse 接受 int 和字符串?

argparse taking int & string?

这是新手,请原谅我的无知。是否有可能(如果可以,如何做到)从包含数字和字母的用户那里获取命令?当用户输入类似“./test -selectport af15”的内容时,我想从用户那里获取 3 个参数(第一个参数总是一个字母,第二个总是一个字母,第三个参数是 1 到 3 位数字(1-999) .感谢任何帮助。谢谢。

我猜这样的事情会做:

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

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

我认为 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}")