18-第1步_从命令行参数获取位置
第1步:从命令行参数获取位置
该程序的输入来自命令行。让getOpenWeather.py看起来像这样:
#! python3
# getOpenWeather.py - Prints the weather for a location from the command line.
APPID = 'YOUR_APPID_HERE'
import json, requests, sys
# Compute location from command line arguments.
if len(sys.argv) < 2:
print('Usage: getOpenWeather.py city_name, 2-letter_country_code')
sys.exit()
location = ' '.join(sys.argv[1:])
# TODO: Download the JSON data from OpenWeatherMap.org's API.
# TODO: Load JSON data into a Python variable.
在Python中,命令行参数存储在 sys.argv
列表里。在#!行和 import
语句之后,程序会检查是否有多个命令行参数(回想一下, sys.argv
中至少有一个元素 sys.argv[0]
,它包含了Python脚本的文件名)。如果该列表中只有一个元素,那么用户没有在命令行中提供位置,且程序向用户提供“Usage”(用法)信息,然后结束。
OpenWeatherMap
服务要求查询的格式为城市名称、逗号和两个字母的国家代码(如美国的 "US"
)。你可以在维基百科上找到这些代码的列表。我们的脚本会显示检索到的JSON文本中的第一个城市的天气。遗憾的是,名字相同的城市,例如俄勒冈州的波特兰和缅因州的波特兰,都会被包含在内,不过JSON文本中会包含经纬度信息以区分不同城市。
命令行参数以空格分隔。命令行参数 San Francisco, CA
将使 sys.argv
保存 ['getOpenWeather.py', 'San', 'Francisco,', 'CA']
。因此,调用 join()
方法将 sys. argv
中除第一个字符串以外的字符串连接起来。将连接的字符串存储在变量 location
中。