Python如何一次性搞定文件读写处理难题

 更新时间:2025年05月28日 09:26:06   作者:软件测试杂谈  
每个程序员都离不开文件处理,无论是读取配置文件、处理Excel表格,还是保存程序运行日志,本文就来使用最通俗的语言,带你彻底掌握Python文件处理吧

为什么要学习文件处理?

每个程序员都离不开文件处理。无论是读取配置文件、处理Excel表格,还是保存程序运行日志,文件操作都是必备技能。但是很多教程要么太浅显,要么太复杂,今天我就用最通俗的语言,带你彻底掌握Python文件处理!

基础操作:文件读写入门

先从最基础的开始。假设你有一个叫notes.txt的文本文件,想要读取它的内容:

# 最简单的文件读取
with open('notes.txt', 'r', encoding='utf-8') as f:
    content = f.read()
print(content)

这里有个小技巧:一定要加上encoding='utf-8',不然中文就会变成乱码,这可是我踩过的坑啊!

写入文件也很简单:

# 写入文本文件
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write('这是第一行\n')
    f.write('这是第二行\n')

进阶技巧:批量文件处理

但是实际工作中,我们经常需要处理多个文件。来看看这个实用的例子,批量重命名文件:

import os

def batch_rename(folder_path, old_str, new_str):
    """批量重命名文件,将文件名中的old_str替换为new_str"""
    count = 0
    for filename in os.listdir(folder_path):
        if old_str in filename:
            old_file = os.path.join(folder_path, filename)
            new_file = os.path.join(folder_path, filename.replace(old_str, new_str))
            os.rename(old_file, new_file)
            count += 1
    return count

# 使用示例
folder = '测试文件夹'
renamed = batch_rename(folder, 'old', 'new')
print(f'成功重命名了{renamed}个文件')

高级应用:文件监控器

这个才是真正的干货!来看看如何写一个文件变化监控器,可以实时监控文件夹的变化:

# 导入所需模块
import time
from watchdog.observers import Observer  # 用于监控文件系统事件
from watchdog.events import FileSystemEventHandler  # 文件系统事件处理器基类

class MyHandler(FileSystemEventHandler):
   def on_modified(self, event):
       """当监控的文件发生修改时触发"""
       if not event.is_directory:  # 仅处理文件变化,忽略目录
           print(f'文件发生变化:{event.src_path}')
           
   def on_created(self, event):
       """当有新文件创建时触发"""
       if not event.is_directory:  # 仅处理文件创建,忽略目录
           print(f'新建文件:{event.src_path}')

def monitor_folder(path):
   """
   监控指定文件夹的变化
   参数:
       path: 要监控的文件夹路径
   """
   event_handler = MyHandler()  # 创建事件处理器实例
   observer = Observer()  # 创建观察者实例
   observer.schedule(event_handler, path, recursive=False)  # 设置监控的路径(不递归子目录)
   observer.start()  # 启动监控
   
   try:
       while True:
           time.sleep(1)  # 每秒检查一次
   except KeyboardInterrupt:  # 捕获Ctrl+C中断信号
       observer.stop()  # 停止监控
   observer.join()  # 等待observer完全停止

# 程序入口
if __name__ == '__main__':
   monitor_folder('要监控的文件夹路径')  # 传入要监控的文件夹路径

这个程序可以实时监控文件夹中的变化,比如新建文件、修改文件等。对于需要监控日志文件或者配置文件的场景特别有用!

实战小贴士

  • 处理大文件时,用read()一次性读取可能会占用太多内存,建议使用for line in f:逐行读取
  • 写文件时记得及时关闭,最好使用with语句自动处理
  • 路径操作推荐使用os.path模块,这样能保证代码在不同操作系统上都能正常运行

常见问题解答

问:为什么我的文件路径总是报错?答:Windows系统中,路径分隔符是反斜杠``,但在Python字符串中需要写成\,或者直接用正斜杠/,Python会自动处理。

问:如何判断文件是否存在?答:可以使用os.path.exists()函数:

import os
if os.path.exists('文件路径'):
    print('文件存在')
else:
    print('文件不存在')

文件处理是Python中非常重要的一个技能点。掌握了这些内容,基本上日常工作中遇到的文件处理需求都能搞定了。

到此这篇关于Python如何一次性搞定文件读写处理难题的文章就介绍到这了,更多相关Python文件处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Python中ping命令的深层原理

    详解Python中ping命令的深层原理

    Ping命令是网络管理员和普通用户最常用的网络工具之一,可以测试网络连接是否正常,本文主要来和大家探讨Ping命令的工作原理和用法,需要的可以参考一下
    2023-06-06
  • 基于Python编写一个语音合成系统

    基于Python编写一个语音合成系统

    这篇文章主要介绍了如何利用Python制作一个语音合成系统,文中的示例代码讲解详细,对我们学习Python有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-03-03
  • Django csrf校验的实现

    Django csrf校验的实现

    这篇文章主要介绍了Django csrf校验的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Python3实现的简单工资管理系统示例

    Python3实现的简单工资管理系统示例

    这篇文章主要介绍了Python3实现的简单工资管理系统,涉及Python文件读写、数据遍历、判断等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Python切片操作去除字符串首尾的空格

    Python切片操作去除字符串首尾的空格

    这篇文章主要介绍了Python切片操作去除字符串首尾的空格 的相关资料,需要的朋友可以参考下
    2019-04-04
  • ubuntu安装sublime3并配置python3环境的方法

    ubuntu安装sublime3并配置python3环境的方法

    这篇文章主要介绍了ubuntu安装sublime3并配置python3环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • python中引用与复制用法实例分析

    python中引用与复制用法实例分析

    这篇文章主要介绍了python中引用与复制用法,以实例形式详细分析了python中引用与复制的功能与相关使用技巧,需要的朋友可以参考下
    2015-06-06
  • 浅谈Python3.10 和 Python3.9 之间的差异

    浅谈Python3.10 和 Python3.9 之间的差异

    多年来,Python 进行了大量升级,并且在新版本中添加了许多功能。本文就详细的介绍 一下Python3.10 和 Python3.9差异,感兴趣的朋友可以了解一下
    2021-09-09
  • 使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示

    使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示

    这篇文章主要介绍了使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • 手把手教你用Django执行原生SQL的方法

    手把手教你用Django执行原生SQL的方法

    这篇文章主要介绍了手把手教你用Django执行原生SQL的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论