如何从终端向Python脚本传递连续数字范围作为输入?
实现连续子用例批量运行的几种方法
方法1:用xargs配合seq传递参数
你已经知道seq -w 0001 0008能输出连续带前导零的序列,用xargs可以把这些输出转成script.py的命令行参数:
seq -w 0001 0008 | xargs python script.py
xargs会把管道传来的每行内容合并成空格分隔的参数,最终效果和手动输入python script.py 0001 0002 ... 0008完全一致。
方法2:用bash大括号扩展(无需seq)
bash本身支持带前导零的连续序列扩展,直接写大括号就能生成参数,更简洁:
python script.py {0001..0008}
执行这条命令时,bash会自动把{0001..0008}展开成0001 0002 ... 0008,直接传给脚本。
方法3:修改Python脚本支持范围参数
如果经常需要用范围,不如直接在脚本里加个参数解析逻辑,支持类似0001-0008的范围输入,用起来更灵活。比如在脚本开头加这段解析代码:
import sys def get_test_cases(args): test_cases = [] for arg in args: if '-' in arg: # 拆分范围的起始和结束 start_str, end_str = arg.split('-') digit_length = len(start_str) start_num = int(start_str) end_num = int(end_str) # 生成连续带前导零的用例编号 for num in range(start_num, end_num + 1): test_cases.append(f"{num:0{digit_length}d}") else: test_cases.append(arg) return test_cases if __name__ == "__main__": cases = get_test_cases(sys.argv[1:]) # 这里替换成你的子用例执行逻辑 for case in cases: print(f"执行子用例: {case}")
之后你可以这样运行脚本:
# 单个范围 python script.py 0001-0008 # 混合单个用例和范围 python script.py 0001 0003-0005 0008
内容的提问来源于stack exchange,提问作者SKPS
相关产品推荐
相关产品推荐

