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 计算两个日期相差多少个月实例代码

    python 计算两个日期相差多少个月实例代码

    这篇文章主要介绍了python 计算两个日期相差多少个月实例代码,非常具有实用价值,需要的朋友可以参考下
    2017-05-05
  • python文件处理详解

    python文件处理详解

    这篇文章主要介绍了Python 处理文件的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • Python入门_浅谈数据结构的4种基本类型

    Python入门_浅谈数据结构的4种基本类型

    下面小编就为大家带来一篇Python入门_浅谈数据结构的4种基本类型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python实现定时自动关闭的tkinter窗口方法

    Python实现定时自动关闭的tkinter窗口方法

    今天小编就为大家分享一篇Python实现定时自动关闭的tkinter窗口方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 用Python制作mini翻译器的实现示例

    用Python制作mini翻译器的实现示例

    这篇文章主要介绍了用Python制作mini翻译器的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python爬虫中urllib库的进阶学习

    Python爬虫中urllib库的进阶学习

    本篇文章主要介绍了Python爬虫中urllib库的进阶学习内容,对此有兴趣的朋友赶紧学习分享下。
    2018-01-01
  • 一文搞懂Python中pandas透视表pivot_table功能

    一文搞懂Python中pandas透视表pivot_table功能

    透视表是一种可以对数据动态排布并且分类汇总的表格格式。或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table,今天通过本文给大家介绍Python中pandas透视表pivot_table功能,感兴趣的朋友一起看看吧
    2021-11-11
  • 在Python程序中操作MySQL的基本方法

    在Python程序中操作MySQL的基本方法

    这篇文章主要介绍了再Python程序中操作MySQL的基本方法,主要借助了MYSQLdb module,需要的朋友可以参考下
    2015-07-07
  • python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法

    python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法

    今天小编就为大家分享一篇python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python3 实现的对象与json相互转换操作示例

    python3 实现的对象与json相互转换操作示例

    这篇文章主要介绍了python3 实现的对象与json相互转换操作,结合实例形式分析了Python3使用json模块针对json格式数据转换操作的相关实现技巧,需要的朋友可以参考下
    2019-08-08

最新评论