在Python编程中,文件操作是一项基础且重要的技能。无论是读取配置文件、处理日志,还是操作Excel表格,文件操作都是必不可少的。本文将带大家深入了解Python中的文件操作技术,从基础文件读写到Excel处理,帮助你全面掌握这一重要技能。
🎯 文件操作基础知识
核心概念
以下文件操作基本概念:
🏗️ 文件操作基础
📋 文件打开模式
📖 文本文件操作
📝 基础文本读取
from io import SEEK_END, SEEK_SET# 打开文件file = open(file="resources/test.txt", mode="r", encoding="utf-8")# 查看文件是否可移动print(file.seekable())# 移动文件指针到文件末尾print(file.seek(0, SEEK_END))# 通过tell方法获取文件指针移动的字节数print(file.tell())
🔄 逐块读取文件
try:# 移动文件指针到文件开头 file.seek(0, SEEK_SET)# 如果读取不到数据,read方法会返回None# 循环读取文件内容 data = file.read(32)while data: print(data) data = file.read(32)finally: file.close() # 确保文件被关闭
💡 使用with语句优化
deffile_copy(source_file, target_file):"""优化拷贝文件的方法"""with open(file=source_file, mode="r", encoding="utf-8") as source, \ open(file=target_file, mode="w", encoding="utf-8") as target: data = source.read(512)while data: target.write(data) data = source.read(512)
🔢 二进制文件操作
🗜️ 计算文件签名(MD5哈希)
from hashlib import md5byte_file = open(file="resources/资产调换流程.jpg", mode="rb")# 文件大小print(byte_file.seekable())byte_file.seek(0, SEEK_END)print(f'文件大小:{byte_file.tell()}')hasher = md5()try: byte_file.seek(0, SEEK_SET) data = byte_file.read(256)while data: hasher.update(data) data = byte_file.read(256)finally: byte_file.close()print(f'文件签名:{hasher.hexdigest()}')
📊 CSV文件操作
📝 读取CSV文件
CSV(Comma-Separated Values)是一种常见的表格数据格式,Python提供了内置的csv模块来处理:
import csvwith open(file="resources/t_fail_msg_info_202602131642.csv", mode="r", encoding="utf-8") as file:# delimiter: 分隔符(默认逗号),quotechar: 引用符(默认双引号) reader = csv.reader(file, delimiter=",", quotechar='"')for row in reader: print(row)
📈 Excel文件操作
🔍 使用xlrd读取Excel
安装依赖:
pip install xlrd
import xlrdwb = xlrd.open_workbook("resources/订单列表_20260213.xls")print(f'工作部的Sheet列表:{wb.sheet_names()}')# 通过工作表名称获取工作表sheet = wb.sheet_by_name("订单列表")print(f'工作部Sheet的行数:{sheet.nrows}')print(f'工作部Sheet的列数:{sheet.ncols}')# 通过工作表索引获取工作表sheet = wb.sheet_by_index(0)# 获取指定行的多少列print(f'第一行前三列:{sheet.row_slice(0, start_colx=0, end_colx=3)}')# 读取某行某列(单元格,索引从0开始)cell = sheet.cell(0, 0)print(f'第一行第一列:{cell.value}')
✏️ 使用xlwt创建Excel
安装依赖:
pip install xlwt
import xlwt# 定义订单类classOrder:""" 订单 """def__init__(self, order_no, order_amount, order_time, order_status): self.order_no = order_no self.order_amount = order_amount self.order_time = order_time self.order_status = order_status# 创建工作簿和工作表wb = xlwt.Workbook()sheet = wb.add_sheet("订单列表")# 写入表头titles = ["订单号", "订单金额", "订单时间", "订单状态"]for col_index, title in enumerate(titles): sheet.write(0, col_index, title)# 准备数据orders = [ Order("202602280067890", 100, "2026-02-28 10:42:00", "待支付"), Order("202602280067891", 200, "2026-02-28 16:42:00", "已完成"), Order("202602280067892", 300, "2026-02-28 06:42:00", "已支付")]# 写入数据for row_index, order in enumerate(orders, start=1): sheet.write(row_index, 0, order.order_no) sheet.write(row_index, 1, order.order_amount) sheet.write(row_index, 2, order.order_time) sheet.write(row_index, 3, order.order_status)# 保存工作簿wb.save("resources/订单列表_20260228.xls")
🎨 使用openpyxl高级操作Excel
安装依赖:
pip install openpyxl
import openpyxlfrom openpyxl.styles import Font# 定义学生信息类classStudentInfo:""" 学生基本信息 """def__init__(self, student_number, name, mathematics, chinese, english): self.name = name self.student_number = student_number self.mathematics = mathematics self.chinese = chinese self.english = english# 创建工作簿wb = openpyxl.Workbook()sheet = wb.activesheet.title = "成绩排行榜"# 定义表头样式header_font_style = Font(name="宋体", size=12, bold=True)# 写入表头titles = ["学号", "姓名", "语文", "数学", "英语", "总分", "平均分"]for col_index, title in enumerate(titles, start=1): sheet.cell(1, col_index).font = header_font_style sheet.cell(1, col_index, title)# 准备数据data = [ StudentInfo("1010001", "王小婷", 99, 100, 98), StudentInfo("1010002", "李思达", 80, 75, 92), StudentInfo("1010003", "彰武路", 78, 90, 88)]# 定义门科分数超过90分标成红色red_font_style = Font(name="宋体", size=12, color="FF0000")# 写入数据并设置样式for row_index, student in enumerate(data, start=2): sheet.cell(row_index, 1, student.student_number) sheet.cell(row_index, 2, student.name) sheet.cell(row_index, 3, student.chinese)if student.chinese > 90: sheet.cell(row_index, 3, student.chinese).font = red_font_style sheet.cell(row_index, 4, student.mathematics)if student.mathematics > 90: sheet.cell(row_index, 4, student.mathematics).font = red_font_style sheet.cell(row_index, 5, student.english)if student.english > 90: sheet.cell(row_index, 5, student.english).font = red_font_style# 汇总总分数,使用函数 sheet.cell(row_index, 6, f'=SUM(C{row_index}:E{row_index})')# 计算平均分数,使用函数 sheet.cell(row_index, 7, f'=AVERAGE(C{row_index}:E{row_index})') sheet.cell(row_index, 7).number_format = '0.00'# 保留两位小数# 保存工作簿wb.save("resources/一年级二班期中考试成绩排行榜.xlsx")
| | |
|---|
| | Font(name="宋体", size=12, bold=True) |
| | cell.font = red_font_style |
| | cell.number_format = '0.00' |
🛠️ 文件操作最佳实践
📋 资源管理
🔒 错误处理
🎯 文件操作场景对比
📚 总结
Python的文件操作功能强大且灵活,掌握了这些技能,你可以轻松处理各种文件格式:
- 基础文件操作:掌握
open()函数的使用和文件指针操作 - 二进制文件操作:学会计算文件哈希值和校验文件完整性
- CSV文件处理:使用内置csv模块处理结构化文本数据
- Excel文件操作:使用xlrd、xlwt和openpyxl处理Excel文件
文件操作是Python编程的基础,也是数据处理、自动化脚本等应用场景的重要技能。希望本文能帮助你更好地理解和应用Python的文件操作功能。