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}")
这是新手,请原谅我的无知。是否有可能(如果可以,如何做到)从包含数字和字母的用户那里获取命令?当用户输入类似“./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}")