如何在Python命令行参数中接收多个浮点型输入?
用argparse解析带括号的三元参数适配numpy.linspace
要实现python script.py -arg1(input1,input2,input3)这种格式的参数解析,核心是先通过argparse拿到完整的参数字符串,再手动拆分转换为numpy.linspace需要的start(浮点)、stop(浮点)、num(整数)类型。
完整实现代码
import argparse import numpy as np parser = argparse.ArgumentParser(description='Test script with linspace parameters') parser.add_argument('-arg1', '--arg1', help='Set linspace range as (start,stop,num), e.g. (0.0, 10.0, 5)', required=True) args = parser.parse_args() # 解析arg1参数 # 去掉首尾的括号,按逗号分割 arg_str = args.arg1.strip('()') start_str, stop_str, num_str = arg_str.split(',') # 转换为对应类型:start/stop是浮点数,num是整数 start = float(start_str.strip()) stop = float(stop_str.strip()) num = int(num_str.strip()) # 生成linspace数组并用于for循环 linspace_array = np.linspace(start, stop, num) print("Generated linspace array:") for val in linspace_array: print(f"Processing value: {val:.2f}")
关键步骤说明
- argparse会将
-arg1后的括号包裹内容作为完整字符串接收,所以第一步要剥离括号并拆分内容 - 注意处理分割后的字符串可能带有的空格(比如用户输入
(0.0, 10.0, 5)),用strip()去除首尾空白 - 因为numpy.linspace的
num参数要求是整数,所以第三个值要转成int类型,前两个转成float
测试命令示例
执行脚本时可以这样输入:
python script.py -arg1(0.0, 10.0, 5)
或者不带空格:
python script.py -arg1(0.0,10.0,5)
内容的提问来源于stack exchange,提问作者phalanxasks
相关产品推荐
相关产品推荐

