364 字
1 分钟
python学习笔记
python学习笔记
parse_arguments
parse_arguments 通常指用 Python 标准库 argparse 来解析命令行参数,让你的脚本像专业工具一样通过命令行接收输入,而不是硬编码在代码里。
关键组件对照表
| 写法 | 含义 | 示例 |
|---|---|---|
"input" | 位置参数,必须按顺序提供 | python script.py file.las |
"--name" | 可选参数,命令行里用 --name value | --voxel-size 0.05 |
"-o", "--output" | 短别名,-o 和 --output 等价 | -o result.txt |
type=float | 自动类型转换,传错会报错 | --threshold 1.5 |
default=0.05 | 用户没给时的默认值 | |
choices=[...] | 限定可选值,防止乱输入 | --method voxel |
action="store_true" | 不需要跟值,加了就是 True | --visualize |
nargs="+" | 接收多个值,变成列表 | --files a.las b.las |
required=True | 虽然是 -- 开头,但强制必填 |
argparse.ArgumentParser(...) 括号里的这些叫 构造参数 / 初始化参数,用来配置整个命令行解析器本身的行为。
| 参数名 | 作用 | 常用值 | 人话解释 |
|---|---|---|---|
| prog | 程序名称 | prog="carriage_tool" | 帮助信息里显示的程序名,默认是文件名 |
| description | 程序描述 | description="车厢点云分割与体积计算" | 显示在帮助信息最开头 |
| epilog | 结尾备注 | epilog="作者: Fred" | 显示在帮助信息末尾 |
| usage | 自定义用法 | usage="%(prog)s [options] <file>" | 覆盖默认的用法提示格式 |
| formatter_class | 帮助信息排版 | argparse.RawDescriptionHelpFormatter | 控制 -h 打印出来的样式 |
| parents | 继承其他解析器 | parents=[parent_parser] | 把另一个解析器的参数复制过来 |
| add_help | 是否自动加 -h | True(默认) / False | 设为 False 后,python script.py -h 就失效了 |
| prefix_chars | 前缀字符 | "-"(默认) / "+" / "-" | 一般不动,决定参数前缀用什么符号 |
示例
import argparse
def parse_arguments(): parser = argparse.ArgumentParser( description="车厢点云分割与体积计算", formatter_class=argparse.ArgumentDefaultsHelpFormatter # 打印帮助时显示默认值 )
# 数据输入 parser.add_argument("input_path", help="输入点云文件 (.las/.laz/.ply)") parser.add_argument("--ground-height", type=float, default=None, help="地面高度Z值(自动检测则留空)")
# 分割参数 parser.add_argument("--cluster-thresh", type=float, default=0.5, help="欧式聚类距离阈值(米)") parser.add_argument("--min-points", type=int, default=1000, help="车厢有效点云最小点数")
# 体积参数 parser.add_argument("--volume-method", choices=["voxel", "slice", "convex_hull"], default="voxel", help="体积计算方法") parser.add_argument("--slice-step", type=float, default=0.1, help="切片法步长(米),仅method=slice时生效")
# 输出控制 parser.add_argument("--save-segmented", action="store_true", help="是否保存分割后的车厢点云") parser.add_argument("--output-dir", "-o", default="./output", help="结果输出目录")
return parser.parse_args()
# 使用
args = parse_arguments()
# args.input_path, args.cluster_thresh, args.volume_method ...部分信息可能已经过时









