如何在Python中从命令行输入值创建经纬度变量计算距离
如何从命令行参数获取坐标并赋值给变量
方法1:使用sys.argv(简单直接)
sys.argv会保存命令行传入的所有参数,第一个元素是脚本名,后面的就是你传入的四个坐标参数。只需提取这些参数并转换为浮点数即可:
import sys from geopy import distance # 提取命令行参数,跳过第一个元素(脚本文件名) lat1 = float(sys.argv[1]) long1 = float(sys.argv[2]) lat2 = float(sys.argv[3]) long2 = float(sys.argv[4]) coords_1 = (lat1, long1) coords_2 = (lat2, long2) print(distance.distance(coords_1, coords_2).km)
执行方式和你给出的示例一致:
python3.9 distance.py -1 -28 -4 -32
方法2:使用argparse(更规范,带参数校验)
如果需要友好的参数提示、输入校验功能,推荐用argparse模块,它能自动生成帮助信息,还能处理参数错误:
import argparse from geopy import distance # 创建参数解析器 parser = argparse.ArgumentParser(description='计算两点间的地理距离') # 添加四个位置参数,指定类型和说明 parser.add_argument('lat1', type=float, help='第一个点的纬度') parser.add_argument('long1', type=float, help='第一个点的经度') parser.add_argument('lat2', type=float, help='第二个点的纬度') parser.add_argument('long2', type=float, help='第二个点的经度') # 解析命令行参数 args = parser.parse_args() # 将解析后的参数赋值给变量 lat1 = args.lat1 long1 = args.long1 lat2 = args.lat2 long2 = args.long2 coords_1 = (lat1, long1) coords_2 = (lat2, long2) print(distance.distance(coords_1, coords_2).km)
额外功能
执行时输入错误参数,或者添加-h/--help参数,会自动显示帮助信息:
python3.9 distance.py -h
输出示例:
usage: distance.py [-h] lat1 long1 lat2 long2 计算两点间的地理距离 positional arguments: lat1 第一个点的纬度 long1 第一个点的经度 lat2 第二个点的纬度 long2 第二个点的经度 optional arguments: -h, --help show this help message and exit
内容的提问来源于stack exchange,提问作者gwsmelo
相关产品推荐
相关产品推荐

