当前位置:嗨网首页>书籍在线阅读

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 中。