Python零基础学习第四天:文件操作与异常处理

最近整理了些python书籍用来查漏补缺,分享给大家

链接:夸克网盘分享

一、文件操作(和纸质笔记本一样重要!)

1. 文件的打开与关闭


文件就像电子笔记本,需要先“翻开”才能读写,用完必须“合上”(防止数据丢失)。

# 基本操作三步走  
file = open("日记.txt", "w", encoding="utf-8")  # 打开文件(模式为写入)  
file.write("2025年2月21日 今天学会了Python文件操作!\n")  
file.close()  # 关闭文件(重要!)

核心知识点

  • 打开模式
    • r:只读(默认)
    • w:写入(覆盖原有内容)
    • a:追加(在文件末尾添加)
    • b:二进制模式(如图片处理)

 编码参数:encoding="utf-8" 解决中文乱码问题

生活案例
假设你每天记录体重,用追加模式最合适:

with open("体重记录.txt", "a", encoding="utf-8") as f:  
    f.write("2025-02-21 体重:65kg\n")  # 自动换行

2. 读取文件内容

方法一:全部读取(适合小文件)

with open("天气预报.txt", "r", encoding="utf-8") as f:  
    content = f.read()  # 一次性读取全部内容  
    print("本周天气:\n", content)

方法二:逐行读取(适合大文件)

with open("长篇小说.txt", "r", encoding="utf-8") as f:  
    for line in f:  # 逐行读取不占内存  
        print(line.strip())  # strip()去掉换行符

❗ 注意陷阱

  • 文件路径问题:若报错FileNotFoundError,检查文件是否在项目目录
  • 忘记关闭文件:用with open() as f语法可自动关闭

互动问题:如果尝试用r模式打开不存在的文件会怎样?

二、异常处理(程序的“安全气囊”)

1. 常见异常类型

  • FileNotFoundError:文件不存在
  • ZeroDivisionError:除以零
  • ValueError:类型转换失败(如把字母转数字)

2. try-except 基本结构

try:  
    num = int(input("请输入数字:"))  
    print(10 / num)  
except ValueError:  
    print("输入的不是数字!")  
except ZeroDivisionError:  
    print("不能除以零!")  
else:  
    print("计算成功!")  # 无异常时执行  
finally:  
    print("程序运行结束")  # 无论是否异常都执行
 

实战场景:读取用户文件时防崩溃

filename = input("请输入文件名:")  
try:  
    with open(filename, "r", encoding="utf-8") as f:  
        print(f.read())  
except FileNotFoundError:  
    print(f"找不到文件 {filename},请检查路径")  
except UnicodeDecodeError:  
    print("文件编码错误,尝试用gbk编码打开")

扩展知识:用except Exception as e捕获所有异常,print(e)查看错误信息 

 

三、模块与包(偷懒神器!)

1. 导入标准库

import math  
print("圆周率:", math.pi)  # 输出 3.141592653589793  
print("平方根:", math.sqrt(16))  # 输出 4.0

2. 第三方库安装与使用

  • 安装命令:pip install 库名(如pip install requests)
  • 使用案例(获取网络天气):
import requests  
response = requests.get("https://weather.com/api/数据")  
print("天气数据:", response.json())  # 假设返回JSON数据

3. 创建自己的模块
步骤:

  1. 新建my_module.py文件
  2. 写入函数:
def say_hello(name):  
    return f"你好,{name}!今天是2025年2月21日"
 
  1. 在其他文件中导入:
from my_module import say_hello  
print(say_hello("小明"))
 

重要概念

  • __name__ == "__main__":让模块可独立运行(添加测试代码)
  • 包(Package):多个模块的集合,需包含__init__.py文件

四、综合案例:天气日记系统 

 

import datetime  

def write_weather():  
    try:  
        city = input("请输入城市:")  
        temperature = float(input("请输入温度:"))  
        with open("weather_diary.txt", "a", encoding="utf-8") as f:  
            date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")  
            f.write(f"{date} | {city} | {temperature}℃\n")  
        print("记录成功!")  
    except ValueError:  
        print("温度必须输入数字!")  

def read_weather():  
    try:  
        with open("weather_diary.txt", "r", encoding="utf-8") as f:  
            print("\n历史天气记录:")  
            for line in f:  
                print(line.strip())  
    except FileNotFoundError:  
        print("还没有天气记录哦!")  

# 主程序  
while True:  
    print("\n1. 写记录 2. 看记录 3. 退出")  
    choice = input("请选择操作:")  
    if choice == "1":  
        write_weather()  
    elif choice == "2":  
        read_weather()  
    elif choice == "3":  
        break  
    else:  
        print("输入错误,请重新选择!")

五、练习题

  1. 文件操作:创建一个words.txt,写入10个英文单词,然后读取文件统计包含字母"e"的单词数量
  2. 异常处理:改造计算器程序,当用户输入非数字时提示错误并重新输入
  3. 模块应用:使用math模块计算半径为5的圆面积,结果保留两位小数
  4. 扩展挑战:用requests库访问https://api.github.com(需安装库),打印返回数据的JSON内容

下节预告:面向对象编程初探——用类描述现实世界(学生类、汽车类、银行账户类)


注意事项

  1. 文件路径建议使用相对路径(文件放在项目文件夹内)
  2. 处理网络请求时添加try-except防止程序卡死
  3. 第三方库安装失败时尝试切换镜像源:pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tomorrow'sThinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值