Python 使用argparse在控制台中运行脚本时出错
hello制作了这个程序,就在这个页面上,但是代码是正确的,但是当在ubuntun控制台中执行脚本时,它给了我以下问题Python 使用argparse在控制台中运行脚本时出错,python,Python,hello制作了这个程序,就在这个页面上,但是代码是正确的,但是当在ubuntun控制台中执行脚本时,它给了我以下问题 from math import radians,cos,sin,asin,sqrt,atan2 import argparse parser=argparse.ArgumentParser() parser.add_argument('--lat1',type=float,metavar="",required=True, help="ent
from math import radians,cos,sin,asin,sqrt,atan2
import argparse
parser=argparse.ArgumentParser()
parser.add_argument('--lat1',type=float,metavar="",required=True, help="enter the first latitude")
parser.add_argument('--lon1',type=float,metavar="",required=True,help="enter the first length")
parser.add_argument('--lat2',type=float,metavar="",required=True,help="enter the second latitude")
parser.add_argument('--lon2',type=float,metavar="",required=True,help="enter the second length")
args=parser.parse_args()
def python_distance(lat1,lon1,lat2,lon2):
lat1=abs(radians(lat1))
lon1=abs(radians(lon1))
lat2=abs(radians(lat2))
lon2=abs(radians(lon2))
radio=6371.0
delta_lon=lon2-lon1
delta_lat=lat2-lat1
h=sin(delta_lat/2)**2+cos(lat1)*cos(lat2)*sin(delta_lon/2)**2
t=2*atan2(sqrt(h),sqrt(1-h))
distancia=radio*t
return distancia
if __name__=="_main_":
print python_distance(args.lat1,args.lon1,args.lat2,args.lon2)
如果我尝试这个函数,它会给出精确的距离,但在执行脚本时,它会告诉我以下内容
yeferson@yeff:~/Escritorio$ python wha.py -13.594787 -89.827362 -13.966572 -88.891292
usage: wha.py [-h] --lat1 --lon1 --lat2 --lon2
wha.py: error: argument --lat1 is required
我在争论中遇到了一些问题,我可以在此问题上等待您的帮助尝试以下方法:
python wha.py --lat1=-13.594787 --lon1=-89.827362 --lat2=-13.966572 --lon2=-88.891292
带有
--
的参数是可选参数,需要像--lat1-13.594787
那样输入。由于所有可选参数都是必需的,您可以删除所有的--
,它们现在是位置参数,您可以只输入-13.594787
。此外,\u main\u
应该是\u main\u
(两侧双下划线),并且print
缺少()
@Adamkwm谢谢你,为了避免这个标志-我该做什么?你是什么意思?你的论点不是负数吗?谢谢你,为了避免用“-”这个符号,我该怎么办