最近整理了些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. 创建自己的模块
步骤:
- 新建my_module.py文件
- 写入函数:
def say_hello(name):
return f"你好,{name}!今天是2025年2月21日"
- 在其他文件中导入:
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("输入错误,请重新选择!")
五、练习题
- 文件操作:创建一个words.txt,写入10个英文单词,然后读取文件统计包含字母"e"的单词数量
- 异常处理:改造计算器程序,当用户输入非数字时提示错误并重新输入
- 模块应用:使用math模块计算半径为5的圆面积,结果保留两位小数
- 扩展挑战:用requests库访问https://api.github.com(需安装库),打印返回数据的JSON内容
下节预告:面向对象编程初探——用类描述现实世界(学生类、汽车类、银行账户类)
注意事项
- 文件路径建议使用相对路径(文件放在项目文件夹内)
- 处理网络请求时添加try-except防止程序卡死
- 第三方库安装失败时尝试切换镜像源:pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple