# 打造智能天气预报:用Python实现城市天气信息网页


背景介绍

随着智能城市的发展,天气预报已成为城市生活的重要组成部分。本项目旨在构建一个简单的天气预报网页,实现用户输入城市名称后,系统自动返回该城市的天气信息。通过文件读写功能,实现了城市名称的存储与管理,同时结合JSON格式的返回方式,提升用户体验。该项目不仅满足核心功能需求,还注重了开发过程中的核心技术点,例如数据处理和文件读写。

技术思路分析

背景需求分析

  1. 核心功能需求:用户输入城市名称后,系统显示天气信息。用户输入需读取并存储至本地文件,输出需包含天气数据。
  2. 数据处理需求:需使用简单的循环和JSON格式返回天气数据。
  3. 文件读写需求:实现城市名称的存储与读取,确保数据持久化。

技术实现方案

  1. 文件读写功能:使用Python的with open()语句读取城市名称并存储至name.txt文件中。该文件将用于后续数据读取。
  2. 天气数据逻辑:通过简单循环读取文件内容,并将其转换为JSON格式输出,返回给用户。
  3. JSON格式输出:使用Python的json模块进行数据序列化,确保天气数据的格式正确。

代码实现

import json

def read_city_name():
    try:
        with open('name.txt', 'r', encoding='utf-8') as file:
            city_name = file.read()
            print(f"读取到的城市名称: {city_name}")
            return city_name
    except FileNotFoundError:
        print("文件不存在,请手动添加")
        return ""

def store_city_name(name):
    try:
        with open('name.txt', 'w', encoding='utf-8') as file:
            file.write(name)
            print("城市名称已存储至文件")
    except Exception:
        print("存储失败,请手动修改")

def get_weather_data(city):
    try:
        with open('name.txt', 'r', encoding='utf-8') as file:
            city_name = file.read()
            if city_name == city:
                weather_info = {
                    "city": city,
                    "weather": "晴天",
                    "temperature": "25°C"
                }
                return weather_info
            else:
                print("城市名称错误!请重新输入")
                return None
    except FileNotFoundError:
        print("城市名称文件不存在,请手动添加")
        return None

# 示例调用
city_input = read_city_name()
if city_input:
    city_name = input("请输入要存储的城市名称: ")
    store_city_name(city_name)
    weather_data = get_weather_data(city_input)
    if weather_data:
        print(json.dumps(weather_data, indent=2))
    else:
        print("天气数据无法获取,请重新输入城市名称")
else:
    print("文件读取失败,请手动添加")

总结

本项目实现了城市名称的读取与存储功能,通过文件读写实现了数据的持久化存储。同时,结合了JSON格式的返回方式,提升了数据的可读性。整个实现过程充分展现了Python在文件处理和数据序列化方面的强大功能,同时也避免了使用复杂的Web框架,体现了技术开发的灵活性。通过逐步实现的功能,证明了Python在Web开发中的可扩展性和可维护性。该项目不仅具备良好的可运行性,还为开发者提供了清晰的实现思路。