当前位置: 首页 > news >正文

寒假学习笔记2.1

一、学习目标
掌握文本文件的读写操作(打开、读取、写入、关闭)

理解with语句与上下文管理器的使用

学习CSV和JSON文件的读写

掌握异常处理机制(try-except-else-finally)

学会自定义异常类

能够编写健壮的文件处理程序

二、学习内容

  1. 文件操作基础
    打开文件:open(filename, mode)

mode:'r'读、'w'写(覆盖)、'a'追加、'r+'读写

encoding:指定编码(如utf-8)

关闭文件:file.close()

读取:read()、readline()、readlines()

写入:write()、writelines()

python

写文件

file = open("test.txt", "w", encoding="utf-8")
file.write("Hello, Python!\n")
file.write("这是第一行\n第二行")
file.close()

读文件

file = open("test.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()
2. 使用with语句(推荐)
自动管理文件关闭,即使发生异常也能正确关闭

python

写入

with open("test.txt", "w", encoding="utf-8") as f:
f.write("使用with写入\n")

读取

with open("test.txt", "r", encoding="utf-8") as f:
for line in f: # 逐行读取(高效)
print(line, end="")
3. 文件读取方法对比
python
with open("test.txt", "r", encoding="utf-8") as f:
# 1. 读取全部内容为字符串
data = f.read()

# 2. 读取一行
line = f.readline()# 3. 读取所有行到列表
lines = f.readlines()# 4. 迭代器方式(推荐大文件)
for line in f:process(line)
  1. CSV文件处理
    python
    import csv

写入CSV

data = [
["姓名", "年龄", "城市"],
["小明", 18, "北京"],
["小红", 20, "上海"]
]

with open("students.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(data)

读取CSV

with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)

使用DictWriter/DictReader(以字典形式操作)

with open("students.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["姓名"], row["年龄"])
5. JSON文件处理
python
import json

Python对象 -> JSON字符串

data = {
"name": "小明",
"age": 18,
"scores": [85, 92, 78],
"address": {"city": "北京", "district": "海淀"}
}

写入JSON文件

with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=4)

读取JSON文件

with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print(loaded_data)

JSON字符串转换

json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
6. 异常处理基础
try-except:捕获异常

else:无异常时执行

finally:无论是否异常都执行

python
try:
num = int(input("请输入一个数字:"))
result = 10 / num
except ValueError:
print("输入的不是有效数字")
except ZeroDivisionError:
print("不能除以0")
except Exception as e:
print(f"发生未知错误:{e}")
else:
print(f"结果是:{result}")
finally:
print("程序结束")
7. 捕获多个异常
python
try:
file = open("nonexist.txt")
content = file.read()
num = int(content)
except (FileNotFoundError, PermissionError):
print("文件不存在或无法访问")
except ValueError:
print("文件内容不是数字")
8. 抛出异常
python
def divide(a, b):
if b == 0:
raise ValueError("除数不能为0")
return a / b

try:
result = divide(10, 0)
except ValueError as e:
print(f"错误:{e}")
9. 自定义异常
python
class InvalidAgeError(Exception):
"""自定义异常:年龄无效"""
pass

def set_age(age):
if age < 0 or age > 150:
raise InvalidAgeError(f"年龄{age}超出范围")
print(f"年龄设置为{age}")

try:
set_age(200)
except InvalidAgeError as e:
print(f"年龄设置失败:{e}")
10. 结合文件操作与异常处理
python
def read_safe(filename):
try:
with open(filename, "r", encoding="utf-8") as f:
return f.read()
except FileNotFoundError:
print(f"文件{filename}不存在")
return None
except PermissionError:
print("没有读取权限")
return None
except Exception as e:
print(f"读取文件时发生错误:{e}")
return None

http://www.jsqmd.com/news/390392/

相关文章:

  • 并查集 - ## Find them, Catch them
  • (3-2)机器人身体结构与人体仿生学:人形机器人躯干体系
  • 气泡图标注软件中文版(美式功能设计)|一键插入序号气泡图,支持CAD/PDF/图片+OCR识别+Excel报告导出
  • EncodeConvert编码转换器v2.0——高效支持GBK与UTF-8互转的汉字编码工具
  • ZProtect一机一码工具(电脑版):专为DLL/EXE文件设计的轻量级软件开发解决方案
  • 未来之窗昭和仙君(七十二)前端交互异常行为检测—东方仙盟练气
  • 冥想第一千七百九十七天(1797)
  • 冥想第一千七百九十六天(1796)
  • ROS快速入门教程:什么是SLAM(Simultaneous localization and mapping,同步定位与建图)【解决机器人在未知环境运动时的定位与地图构建问题】
  • OpenTelemetry 开发实战【左扬精讲】—— 云原生可观测体系构建与分布式追踪二次开发
  • 工业园区全域轨迹拼接与异常行为智能识别平台——跨摄像单元轨迹连续性校验 × 多帧误差补偿引擎
  • Agentic AI时代,提示工程架构师的核心竞争力是什么?
  • 如何提升企业品牌在豆包结果中的排名? - 品牌2025
  • 寒假19
  • VSCode 配置 MinGW 搭建 C++ 开发环境
  • 基于SSM的蛋糕私人订制网站[SSM]-计算机毕业设计源码+LW文档
  • 领略大数据领域数据科学的数据清洗技巧
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 4 —— 基于 Operator 实现大模型私有化部署与管理
  • 基于SSM的传智健康系统[SSM]-计算机毕业设计源码+LW文档
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 3 —— 基于 Operator 实现 GPU 竞价实例资源池调度管理
  • 论文浅读(第一期)|摘自<<LOOpy Hell(ow):Infinite Traffic Loops at theApplication Layer>>(第三节) - 指南
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 6 —— 基于运维专家知识库的智能故障诊断与排查 Operator 实战
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 5 —— 基于大语言模型(LLM)的实时日志流智能监测 Operator 实现
  • HTML 脚本:构建交互式网页的基石
  • Scala IF...ELSE 语句详解
  • XSL 语言
  • 大数据领域时序分析:应对海量时间序列数据的挑战
  • Objective - C 在移动开发中的动画缩放与旋转
  • 基于yolov8学生课堂考勤专注检测系统+用的resnet神经网络
  • 基于YOLOV8的行人检测与跟踪系统