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

python学习笔记七(文件)

文章目录

  • Python 文件操作与异常处理全面指南
    • 一、文件基本知识
      • 1. 文件类型
      • 2. 文件操作基本步骤
    • 二、文件操作
      • 1. 打开文件
      • 2. 读取文件内容
      • 3. 写入文件
      • 4. 关闭文件
      • 5. 使用with语句(推荐)
    • 三、CSV文件操作
      • 1. 使用csv模块
      • 2. 读取CSV文件
      • 3. 写入CSV文件
    • 四、异常与异常处理
      • 1. 常见文件操作异常
      • 2. 异常处理基本语法
      • 3. 抛出异常
    • 五、文件与异常应用实例
      • 1. 文件备份工具
      • 2. CSV数据分析
      • 3. 日志记录器
      • 4. 配置文件读取
    • 六、最佳实践

Python 文件操作与异常处理全面指南

一、文件基本知识

1. 文件类型

  • 文本文件:以字符形式存储,如.txt, .py, .csv等
  • 二进制文件:以字节形式存储,如图片、音频、视频等

2. 文件操作基本步骤

  1. 打开文件
  2. 读取/写入内容
  3. 关闭文件

二、文件操作

1. 打开文件

使用open()函数:

file = open('filename.txt', 'mode', encoding='utf-8')

常用模式:

  • 'r':只读(默认)
  • 'w':写入,会覆盖已有文件
  • 'a':追加,在文件末尾添加
  • 'x':创建新文件并写入
  • 'b':二进制模式,如'rb''wb'
  • '+':读写模式,如'r+''w+'

2. 读取文件内容

# 读取整个文件
content = file.read()# 读取一行
line = file.readline()# 读取所有行,返回列表
lines = file.readlines()# 逐行读取(推荐方式)
for line in file:print(line.strip())  # strip()去除首尾空白字符

3. 写入文件

# 写入字符串
file.write("Hello, World!\n")# 写入多行
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
file.writelines(lines)

4. 关闭文件

file.close()

5. 使用with语句(推荐)

with open('filename.txt', 'r') as file:content = file.read()# 不需要手动关闭,with块结束后自动关闭

Python之with语句

三、CSV文件操作

1. 使用csv模块

import csv

2. 读取CSV文件

with open('data.csv', 'r') as csvfile:reader = csv.reader(csvfile)for row in reader:print(row)  # 每行是一个列表

使用DictReader获取字典形式数据:

with open('data.csv', 'r') as csvfile:reader = csv.DictReader(csvfile)for row in reader:print(row['column_name'])  # 通过列名访问数据

3. 写入CSV文件

data = [['Name', 'Age'], ['Alice', 25], ['Bob', 30]]with open('output.csv', 'w', newline='') as csvfile:writer = csv.writer(csvfile)writer.writerows(data)

使用DictWriter写入字典形式数据:

fieldnames = ['Name', 'Age']
data = [{'Name': 'Alice', 'Age': 25}, {'Name': 'Bob', 'Age': 30}]with open('output.csv', 'w', newline='') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()  # 写入表头writer.writerows(data)

四、异常与异常处理

1. 常见文件操作异常

  • FileNotFoundError:文件不存在
  • PermissionError:没有权限访问文件
  • IOError:输入输出错误
  • UnicodeDecodeError:编码错误

2. 异常处理基本语法

try:# 可能引发异常的代码with open('nonexistent.txt', 'r') as file:content = file.read()
except FileNotFoundError:# 处理特定异常print("文件不存在!")
except Exception as e:# 处理其他异常print(f"发生错误: {e}")
else:# 没有异常时执行print("文件读取成功!")
finally:# 无论是否发生异常都会执行print("操作结束")

3. 抛出异常

if not file_exists:raise FileNotFoundError("指定的文件不存在")

五、文件与异常应用实例

1. 文件备份工具

def backup_file(source, dest):try:with open(source, 'r') as src, open(dest, 'w') as dst:dst.write(src.read())print(f"文件 {source} 已成功备份到 {dest}")except FileNotFoundError:print("源文件不存在!")except PermissionError:print("没有足够的权限!")except Exception as e:print(f"备份过程中发生错误: {e}")backup_file('important.txt', 'important_backup.txt')

2. CSV数据分析

def analyze_csv(filename):try:with open(filename, 'r') as csvfile:reader = csv.DictReader(csvfile)total = 0count = 0for row in reader:try:total += float(row['Salary'])count += 1except (ValueError, KeyError):continueif count > 0:print(f"平均工资: {total/count:.2f}")else:print("没有有效数据")except FileNotFoundError:print("CSV文件不存在!")except Exception as e:print(f"分析过程中发生错误: {e}")analyze_csv('employees.csv')

3. 日志记录器

def log_message(message, logfile='app.log'):try:with open(logfile, 'a') as f:timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')f.write(f"[{timestamp}] {message}\n")except IOError as e:print(f"无法写入日志: {e}")log_message("程序启动")
log_message("处理数据...")
log_message("程序结束")

4. 配置文件读取

def read_config(config_file='config.ini'):config = {}try:with open(config_file, 'r') as f:for line in f:line = line.strip()if line and not line.startswith('#'):try:key, value = line.split('=', 1)config[key.strip()] = value.strip()except ValueError:continuereturn configexcept FileNotFoundError:print(f"警告: 配置文件 {config_file} 不存在,使用默认配置")return {}except Exception as e:print(f"读取配置文件时出错: {e}")return {}settings = read_config()

六、最佳实践

  1. 总是使用with语句:确保文件正确关闭
  2. 处理异常:预料可能发生的错误并提供有意义的反馈
  3. 指定编码:特别是处理非ASCII字符时
  4. 检查文件存在性:在写入前检查目录是否存在
  5. 大文件处理:对于大文件,使用逐行读取而非全部读取
  6. 资源清理:确保在程序退出前释放所有文件资源

通过掌握这些文件操作和异常处理技术,你可以构建更健壮、更可靠的Python应用程序。
未完待续……

http://www.xdnf.cn/news/5882.html

相关文章:

  • 分布式链路跟踪
  • lubuntu 系统详解
  • WebpackVite总结篇与进阶
  • Java SpringMVC 和 MyBatis 整合项目的事务管理配置详解
  • DeepSeek 赋能汽车全生态:从产品到服务的智能化跃迁
  • 2025年5月13日第一轮
  • vue3父子组件传值
  • 数据治理域——日志数据采集设计
  • c++STL-list的模拟实现
  • conda 输出指定python环境的库 输出为 yaml文件
  • K230 ISP:一种新的白平衡标定方法
  • AcroForm 格式化文本(域)字段
  • ElasticSearch父子关系数据建模
  • MySQL命令行导出数据(docker版本)
  • 运行Spark程序-在shell中运行1
  • 智源联合南开大学开源Chinese-LiPS中文多模态语音识别数据集
  • base64形式的图片数据保存方法
  • Redis介绍与使用
  • 【git】clone项目后续,github clone的网络配置,大型项目git log 输出txt,切换commit学习,goland远程,自存档
  • 关于maven的依赖下不下来的问题
  • Git基本操作命令
  • 专题四:综合练习( 找出所有子集的异或总和再求和)
  • 解锁Python TDD:从理论到实战的高效编程之道(9/10)
  • 时间序列预测建模的完整流程以及数据分析【学习记录】
  • 选择单例还是依赖注入
  • 【每天一个知识点】Dip 检验(Dip test)
  • CSS经典布局之圣杯布局和双飞翼布局
  • spark-cache模式
  • ubuntu22.04编译PX4无人机仿真实践
  • EMQX v5.0通过连接器和规则同步数据