Python中os.walk用法使用小结

作者:

文章目录
  • root: 当前正在访问的目录路径 dirs: 当前目录下的子目录列表 files: 当前目录下的文件列表
  • project/ ├── log_2024_01.txt ├── config.ini ├── logs/ │ ├── system.log │ ├── app.log │ └── archive/ │ └── old_log.txt └── data/ ├── input.csv └── output.csv
  • import os # 假设当前目录结构如上所示 log_dir_path = “./project” for root, dirs, files in os.walk(log_dir_path): print(f”当前目录: {root}”) print(f”子目录列表: {dirs}”) print(f”文件列表: {files}”) print(“-” * 50)
  • 默认是深度优先遍历(从上到下) 可以控制遍历方向: # 自顶向下遍历(默认) for root, dirs, files in os.walk(“.”, topdown=True): pass # 自底向上遍历 for root, dirs, files in os.walk(“.”, topdown=False): pass 修改 dirs 会影响遍历: for root, dirs, files in os.walk(“.”): # 不遍历隐藏目录 dirs[:] = [d for d in dirs if not d.startswith(‘.’)]
  • import os class LogProcessor: def __init__(self, log_dir_path): self.log_dir_path = log_dir_path def process_logs(self): for root, dirs, files in os.walk(self.log_dir_path): # 按日期处理日志 for file in files: if file.endswith(‘.log’): self._process_single_log(root, file) def _process_single_log(self, directory, filename): filepath = os.path.join(directory, filename) # 处理日志文件的逻辑 print(f”处理: {filepath}”) # 使用示例 processor = LogProcessor(“./logs”) processor.process_logs() os.walk() 是一个非常实用的函数,特别适合需要递归处理文件系统的场景,比如日志分析、文件备份、批量重命名等任务。 到此这篇关于Python中os.walk用法使用小结的文章就介绍到这了,更多相关Python os.walk用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: python关于os.walk函数查找windows文件方式 Python文件遍历os.walk()与os.listdir()使用及说明 Python os.listdir与os.walk实现获取路径详解 python 中 os.walk() 函数详解 详解python os.walk()方法的使用 Python使用os.listdir和os.walk获取文件路径 Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法 python 获取文件下所有文件或目录os.walk()的实例 python使用os.listdir和os.walk获得文件的路径的方法 python使用os模块的os.walk遍历文件夹示例
  • 目录
    • 基本概念
    • 示例目录结构
    • 具体例子
      • 第一次迭代
      • 第二次迭代
      • 第三次迭代
      • 第四次迭代
    • 实际应用示例
      • 1. 查找特定文件
      • 2. 计算目录大小
      • 3. 遍历时排除特定目录
      • 4. 获取所有文件的完整路径
    • 重要特性
      • 实际使用技巧

        os.walk() 是 Python 中用于遍历目录树的强大函数。让我详细解释每个变量返回的信息和用法:

        • root: 当前正在访问的目录路径
        • dirs: 当前目录下的子目录列表
        • files: 当前目录下的文件列表

        project/
        ├── log_2024_01.txt
        ├── config.ini
        ├── logs/
        │   ├── system.log
        │   ├── app.log
        │   └── archive/
        │       └── old_log.txt
        └── data/
            ├── input.csv
            └── output.csv
        

        import os
        
        # 假设当前目录结构如上所示
        log_dir_path = "./project"
        
        for root, dirs, files in os.walk(log_dir_path):
            print(f"当前目录: {root}")
            print(f"子目录列表: {dirs}")
            print(f"文件列表: {files}")
            print("-" * 50)
        

        当前目录: ./project
        子目录列表: ['logs', 'data']  # 当前目录下的子文件夹
        文件列表: ['log_2024_01.txt', 'config.ini']  # 当前目录下的文件
        

        当前目录: ./project/logs
        子目录列表: ['archive']  # logs文件夹下的子目录
        文件列表: ['system.log', 'app.log']  # logs文件夹下的文件
        

        当前目录: ./project/logs/archive
        子目录列表: []  # 没有子目录
        文件列表: ['old_log.txt']  # archive文件夹下的文件
        

        当前目录: ./project/data
        子目录列表: []  # 没有子目录
        文件列表: ['input.csv', 'output.csv']  # data文件夹下的文件
        

        import os
        
        for root, dirs, files in os.walk("."):
            for file in files:
                if file.endswith(".log"):
                    full_path = os.path.join(root, file)
                    print(f"找到日志文件: {full_path}")
        

        import os
        
        total_size = 0
        for root, dirs, files in os.walk("."):
            for file in files:
                file_path = os.path.join(root, file)
                total_size += os.path.getsize(file_path)
        
        print(f"总大小: {total_size} 字节")
        

        import os
        
        exclude_dirs = ['.git', '__pycache__', 'node_modules']
        
        for root, dirs, files in os.walk("."):
            # 从 dirs 列表中移除要排除的目录
            dirs[:] = [d for d in dirs if d not in exclude_dirs]
            
            for file in files:
                print(os.path.join(root, file))
        

        import os
        
        all_files = []
        for root, dirs, files in os.walk("/path/to/directory"):
            for file in files:
                full_path = os.path.join(root, file)
                all_files.append(full_path)
        
        print(f"找到 {len(all_files)} 个文件")
        

        默认是深度优先遍历(从上到下)

        可以控制遍历方向

        # 自顶向下遍历(默认)
        for root, dirs, files in os.walk(".", topdown=True):
            pass
        
        # 自底向上遍历
        for root, dirs, files in os.walk(".", topdown=False):
            pass
        

        修改 dirs 会影响遍历

        for root, dirs, files in os.walk("."):
            # 不遍历隐藏目录
            dirs[:] = [d for d in dirs if not d.startswith('.')]
        

        import os
        
        class LogProcessor:
            def __init__(self, log_dir_path):
                self.log_dir_path = log_dir_path
            
            def process_logs(self):
                for root, dirs, files in os.walk(self.log_dir_path):
                    # 按日期处理日志
                    for file in files:
                        if file.endswith('.log'):
                            self._process_single_log(root, file)
            
            def _process_single_log(self, directory, filename):
                filepath = os.path.join(directory, filename)
                # 处理日志文件的逻辑
                print(f"处理: {filepath}")
        
        # 使用示例
        processor = LogProcessor("./logs")
        processor.process_logs()
        

        os.walk() 是一个非常实用的函数,特别适合需要递归处理文件系统的场景,比如日志分析、文件备份、批量重命名等任务。

        到此这篇关于Python中os.walk用法使用小结的文章就介绍到这了,更多相关Python os.walk用法内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • python关于os.walk函数查找windows文件方式
        • Python文件遍历os.walk()与os.listdir()使用及说明
        • Python os.listdir与os.walk实现获取路径详解
        • python 中 os.walk() 函数详解
        • 详解python os.walk()方法的使用
        • Python使用os.listdir和os.walk获取文件路径
        • Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
        • python 获取文件下所有文件或目录os.walk()的实例
        • python使用os.listdir和os.walk获得文件的路径的方法
        • python使用os模块的os.walk遍历文件夹示例

        站内搜索