如果你正在学习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中非常重要的一个技能点。掌握了这些内容,基本上日常工作中遇到的文件处理需求都能搞定了。