Python 基础入门 Day42—— Python 文件与目录操作进阶技巧

40次阅读
没有评论

共计 2169 个字符,预计需要花费 6 分钟才能阅读完成。

欢迎来到 Python 基础入门 Day42!今天我们将一起探索一个非常实用且贴近实际工作的主题 —— Python 文件与目录操作进阶技巧 。文件管理在数据处理、自动化脚本、日志分析等场景中都至关重要。我们会涵盖以下内容:


目录

  1. 文件系统基础操作回顾
  2. 文件批量重命名与移动
  3. 文件内容批处理(查找、替换、汇总)
  4. 自动化日志处理实战案例
  5. 小结与练习

一、文件系统基础操作回顾

Python 中常用 ospathlib 两个模块处理文件系统:

示例:列出当前目录下所有文件

import os

files = os.listdir('.')
for f in files:
    print(f)

或者使用 pathlib 更现代的方式:

from pathlib import Path

path = Path('.')
for file in path.iterdir():
    print(file.name)

二、文件批量重命名与移动

2.1 批量重命名文件

将目录中所有 .txt 文件统一重命名为 file_001.txtfile_002.txt

import os

folder = 'text_files'
files = [f for f in os.listdir(folder) if f.endswith('.txt')]

for i, filename in enumerate(files, start=1):
    src = os.path.join(folder, filename)
    dst = os.path.join(folder, f'file_{i:03}.txt')
    os.rename(src, dst)

2.2 批量移动文件

import shutil

source = 'text_files'
destination = 'backup/'

os.makedirs(destination, exist_ok=True)

for f in os.listdir(source):
    if f.endswith('.txt'):
        shutil.move(os.path.join(source, f), os.path.join(destination, f))

三、文件内容批处理

3.1 替换文件中的内容

在多个文件中,将某关键词全部替换成另一个:

folder = 'logs'
for filename in os.listdir(folder):
    if filename.endswith('.log'):
        filepath = os.path.join(folder, filename)
        with open(filepath, 'r', encoding='utf-8') as file:
            content = file.read()

        content = content.replace('ERROR', 'WARNING')

        with open(filepath, 'w', encoding='utf-8') as file:
            file.write(content)

3.2 汇总多个文件内容

将所有 .txt 文件内容合并到一个新文件中:

output = open('merged_output.txt', 'w', encoding='utf-8')
for filename in os.listdir('text_files'):
    if filename.endswith('.txt'):
        with open(os.path.join('text_files', filename), 'r', encoding='utf-8') as f:
            output.write(f.read() + '\n\n')
output.close()

四、自动化日志处理实战案例

假设你有一个目录 /logs,里面每天生成一个日志文件。我们将编写一个脚本,自动:

  • 提取每个文件中的错误信息
  • 汇总并生成一份 error_report.txt
import os
from datetime import datetime

log_dir = 'logs'
error_report = []

for filename in os.listdir(log_dir):
    if filename.endswith('.log'):
        with open(os.path.join(log_dir, filename), 'r', encoding='utf-8') as file:
            for line in file:
                if 'ERROR' in line:
                    error_report.append(f"{filename}: {line.strip()}")

# 输出错误报告
with open('error_report.txt', 'w', encoding='utf-8') as report:
    report.write(f"Error Report generated at {datetime.now()}\n\n")
    for line in error_report:
        report.write(line + '\n')

五、小结与练习

✅ 今日学习内容:

  • 熟悉了 ospathlib 的使用
  • 掌握了批量重命名、移动文件的方法
  • 学会了批量读取、替换和汇总文件内容
  • 编写了一个自动化日志处理的实用脚本

💡 今日练习:

  1. 将某个目录下所有 .csv 文件批量重命名并移动到新目录中。
  2. 编写脚本统计一个目录下所有文本文件的总行数与平均长度。
  3. 从多个日志文件中提取包含关键字 CRITICAL 的行,输出到一个新文件中。
  4. 尝试将这些操作封装成函数,并通过参数控制路径和关键词。
正文完
 0
评论(没有评论)