【Python文件处理】 txt , word , excel 的基本读写操作

前言

文件处理是编程中的一项基础技能,无论是读取数据、存储信息还是进行数据交换,掌握文件操作对于任何开发者来说都至关重要。Python提供了丰富的库和简单的语法来处理文件,使得即使是初学者也能快速上手。本博客将带你从基础的文件读写开始,逐步深入到更高级的文件处理技巧,包括操作Word和Excel文件。

1. 基础文件操作

打开文件

在Python中,使用open()函数可以打开一个文件,并返回一个文件对象。基本语法如下:

file = open('filename.txt', 'r')  # 'r'代表读取模式

读取文件

使用文件对象的read()方法可以读取文件内容:

content = file.read()
print(content)

🌟filename.txt的文档里面只能有英文,中文会乱码。因为你没有声明以何种方式读取文件时,程序会以默认格式读取,这个时候你需要添加参数:

file = open('filename.txt','r',encoding = 'utf-8')
content = file.read()
print(content)

写入文件

使用write()方法可以将字符串写入文件:

# 记得将文件打开方式修改一下,打开方式设置成'w'
file.write('Hello, World!')
# 每次执行完操作后都要记得关闭文件

关闭文件

操作完成后,不要忘记关闭文件,释放系统资源,⚠️这一步很重要:

file.close()

使用上下文管理器

上面的步骤可以交给上下文管理器,Python的上下文管理器可以自动处理文件的打开和关闭,使代码更加简洁:

with open('filename.txt', 'r') as file:
    content = file.read()
print(content)

🌟推荐大家使用这种方法,使用with语句来打开文件是一个好习惯,因为它可以自动处理文件的关闭操作,即使在读取文件时发生异常也是如此。这样可以避免文件资源泄露的问题。

2. 读取文件的不同模式

除了读取模式'r',Python还支持其他模式,如:

  • 'w':写入模式,如果文件存在则覆盖,不存在则创建。
  • 'a':追加模式,如果文件存在则在末尾追加内容,不存在则创建。
  • 'b':二进制模式,用于读写二进制文件。

3. 逐行读取文件

处理大型文件时,逐行读取可以节省内存:

with open('filename.txt', 'r') as file:
    for line in file:
        print(line.strip())  # 使用strip()去除行尾的换行符

4. 文件迭代器

Python的文件对象本身就是一个迭代器,可以方便地进行逐行迭代:

with open('filename.txt', 'r') as file:
    for line in file:
        process(line)  # 处理每一行

5. 处理大型文件

对于非常大的文件,可以使用生成器逐块读取:

def read_in_chunks(file_object, chunk_size=1024):
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data

with open('large_file.txt', 'rb') as f:
    for piece in read_in_chunks(f):
        process(piece)  # 处理每一块数据

6. 文件和目录操作

除了文件读写,Python的osshutil模块提供了文件和目录操作的功能,如创建、删除、移动和复制文件等。

创建目录

import os  # 导入os模块,提供与操作系统交互的功能

# 使用os.makedirs创建一个新目录
# 参数'new_directory'是想要创建的目录的名称
# 参数exist_ok=True表示如果目录已经存在,则不抛出异常
os.makedirs('new_directory', exist_ok=True)  # 创建名为'new_directory'的目录,如果目录已存在则忽略

复制文件

import shutil  # 导入shutil模块,提供高级文件操作功能

# 使用shutil.copy复制文件
# 'source.txt' 是要复制的源文件的路径
# 'destination.txt' 是目标文件的路径,新文件将被创建在这里
shutil.copy('source.txt', 'destination.txt')  
# 复制名为'source.txt'的文件到'destination.txt'

🌟这段代码的作用是将名为source.txt的文件复制到当前目录下,并命名为destination.txt。如果 destination.txt文件已经存在,它将被覆盖,除非你使用shutil.copy2函数,后者在复制时会尝试保留文件的元数据。如果你需要保留文件的元数据,可以使用shutil.copy2代替shutil.copy。

7. 异常处理

在文件操作中,可能会遇到各种异常情况,如文件不存在、权限问题等。使用try...except语句可以优雅地处理这些异常:

try:
    # 尝试打开名为'filename.txt'的文件进行读取
    with open('filename.txt', 'r') as file:  # 使用with语句确保文件正确关闭
        content = file.read()  # 读取文件内容
except FileNotFoundError:  # 捕获文件未找到的异常
    print("文件未找到")  # 如果文件不存在,打印错误信息
except Exception as e:  # 捕获其他所有类型的异常
    print(f"发生错误:{e}")  # 打印异常的详细信息

8. 编码问题

处理文本文件时,需要注意编码问题,确保正确读取和写入文件,这在上文也已经提过了,这里举出用with打开文件的例子:

with open('filename.txt', 'r', encoding='utf-8') as file:
    content = file.read()

9. 操作Word文档

Python中处理Word文档,我们通常使用python-docx库。首先,你需要安装这个库:

pip install python-docx
创建Word文档
from docx import Document

doc = Document()
doc.add_paragraph('Hello, World!')  # 添加段落
doc.add_heading('Heading', level=1)  # 添加标题

doc.save('example.docx')  # 保存文档
读取Word文档
from docx import Document

doc = Document('example.docx')
for para in doc.paragraphs:
    print(para.text)
修改Word文档
from docx import Document  # 从docx模块导入Document类

# 打开一个名为'example.docx'的Word文档
doc = Document('example.docx')

# 遍历文档中的所有段落
for i, para in enumerate(doc.paragraphs):  # enumerate用于获取索引和段落对象
    # 检查段落的文本内容中是否包含'World'
    if 'World' in para.text:
        # 如果找到'World',将该段落的文本替换为'Hello, Python!'
        doc.paragraphs[i].text = 'Hello, Python!'
        break  # 替换完成后,退出循环

# 将修改后的文档保存为'modified_example.docx'
doc.save('modified_example.docx')

10. 操作Excel文件

对于Excel文件,Python提供了openpyxl(用于.xlsx文件)和xlrd(用于.xls文件)库。这里我们以openpyxl为例。

安装openpyxl
pip install openpyxl
创建Excel工作簿
from openpyxl import Workbook

wb = Workbook()
ws = wb.active  # 获取活动工作表

ws['A1'] = 'Hello'
ws['B1'] = 'World'

wb.save('example.xlsx')
读取Excel工作簿
from openpyxl import load_workbook  # 从openpyxl模块导入load_workbook函数

# 加载名为'example.xlsx'的Excel工作簿
wb = load_workbook('example.xlsx')

# 获取当前激活的工作表
ws = wb.active

# 遍历工作表中指定范围内的行
for row in ws.iter_rows(min_row=1, max_col=2, max_row=1):  # 从第1行开始,到第1行结束,只遍历第1列到第2列
    for cell in row:  # 遍历当前行中的每个单元格
        print(cell.value, end=" ")  # 打印单元格的值,使用空格分隔
    print()  # 每打印完一行后换行
修改Excel工作簿
from openpyxl import load_workbook  # 从openpyxl模块导入load_workbook函数

# 加载名为'example.xlsx'的Excel工作簿
wb = load_workbook('example.xlsx')

# 获取当前激活的工作表
ws = wb.active

# 修改A1单元格的值为'Goodbye'
ws['A1'] = 'Goodbye'  # 指定单元格位置为'A1',然后赋值为字符串'Goodbye'

# 将修改后的工作簿保存为'modified_example.xlsx'
wb.save('modified_example.xlsx')  # 保存工作簿,覆盖或创建新的文件
处理大型Excel文件

对于大型Excel文件,可以使用iter_rows方法逐行读取,以节省内存:

for row in ws.iter_rows(min_row=1, values_only=True):
# values_only=True表示只返回单元格的值,而不是单元格对象
    process(row)  # 处理每一行的数据

11. 总结

Python的文件处理功能非常强大,从简单的读写到复杂的文件操作,都能通过简洁的代码实现。掌握这些基础和高级技巧,将大大提高你的开发效率。

通过python-docxopenpyxl库,Python能够方便地处理Word和Excel文件。这些库提供了创建、读取、修改和保存文件的功能,非常适合自动化办公和数据分析任务。


希望这篇博客能帮助你更好地理解和使用Python进行文件处理,让你在处理文本文件、Word文档和Excel文件时更加得心应手。如果你有任何问题或需要进一步的示例,请评论区随时留言❤️

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吃点李子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值