Path: blob/master/Tools/scripts/convert_param_scale.py
9317 views
#!/usr/bin/env python312# flake8: noqa34'''5tool to convert parameter names and scales, useful for conversion for cm -> m and cdeg -> deg67this looks for files called *.param or *.parm89example:10Tools/scripts/convert_param_scale.py --scale 0.1 TRIM_ARSPD_CM AIRSPEED_CRUISE11'''1213import os14import sys1516from argparse import ArgumentParser1718parser = ArgumentParser(description="parameter conversion tool")1920parser.add_argument("--scale", default=1.0, type=float, help="scale factor")21parser.add_argument("--directory", default=".", help="directory to search")22parser.add_argument("old_name", default=None, help="old parameter name")23parser.add_argument("new_name", default=None, help="new parameter name")2425args = parser.parse_args()2627def process_file(fname):28needs_write = False29with open(fname, "r") as f:30lines = f.readlines()31for i in range(len(lines)):32line = lines[i]33if line.startswith(args.old_name):34a = line.split()35if len(a) == 2:36sep = ' '37else:38a = line.split(',')39if len(a) == 2:40sep = ','41else:42continue43v = float(a[1])44v *= args.scale45lines[i] = "%s%s%.2f\n" % (args.new_name, sep, v)46needs_write = True47if not needs_write:48return49print("Updating %s" % fname)50with open(fname, "w") as f:51for line in lines:52f.write(line)5354for root, dirs, files in os.walk(args.directory):55for file in files:56if file.endswith(".parm") or file.endswith(".param"):57process_file(os.path.join(root, file))585960