当前位置:首页 > Python > 正文

Python查看文件目录的几种方法详解 | Python文件操作教程

Python查看文件目录的几种方法详解

掌握Python文件目录操作的多种实用技巧

为什么需要查看文件目录?

在Python编程中,文件目录操作是常见任务。无论是数据分析、自动化脚本还是Web应用开发,我们经常需要:

  • 列出目录中的所有文件和子目录
  • 根据特定模式搜索文件
  • 递归遍历目录结构
  • 获取文件属性信息

Python提供了多种内置模块来实现这些功能,包括osglobpathlib等。

方法一:使用os.listdir()

os.listdir()是Python中最基本的目录查看方法,返回指定路径下的所有文件和子目录名称列表。

代码示例:
import os

# 获取当前目录下的所有文件和子目录
contents = os.listdir('.')
print("当前目录内容:")
for item in contents:
    print(item)

# 获取指定目录内容
path = "/path/to/your/directory"
if os.path.exists(path):
    print(f"\n{path} 目录内容:")
    for item in os.listdir(path):
        print(item)
else:
    print(f"目录 {path} 不存在")

优点:

  • 简单易用,不需要额外安装
  • 返回结果快速直接

缺点:

  • 不区分文件和目录
  • 不提供递归功能
  • 不包含完整路径信息

方法二:使用glob.glob()

glob模块支持使用Unix shell风格的通配符进行文件匹配,非常适合根据特定模式查找文件。

代码示例:
import glob

# 查找当前目录所有.py文件
py_files = glob.glob("*.py")
print("Python文件:")
for file in py_files:
    print(file)

# 查找子目录中的所有.jpg文件
jpg_files = glob.glob("**/*.jpg", recursive=True)
print("\n所有JPG图片:")
for jpg in jpg_files:
    print(jpg)

# 使用绝对路径匹配
abs_files = glob.glob("/home/user/docs/*.txt")
print("\n文档目录中的文本文件:")
for txt in abs_files:
    print(txt)

通配符说明:

  • * - 匹配任意数量的字符
  • ? - 匹配单个字符
  • [] - 匹配指定范围内的字符
  • ** - 递归匹配所有子目录(需设置recursive=True)

方法三:使用os.walk()

os.walk()是遍历目录树的最佳方法,它会递归访问所有子目录,并返回三元组(目录路径、子目录列表、文件列表)。

代码示例:
import os

# 遍历当前目录及其所有子目录
for root, dirs, files in os.walk('.'):
    print(f"\n当前目录: {root}")
    print(f"子目录: {dirs}")
    print(f"文件: {files}")
    
    # 处理每个文件
    for file in files:
        # 获取文件完整路径
        file_path = os.path.join(root, file)
        print(f"文件路径: {file_path}")
        
        # 获取文件大小
        file_size = os.path.getsize(file_path)
        print(f"文件大小: {file_size} 字节")

实际应用场景:

  • 计算目录总大小
  • 批量重命名目录中的文件
  • 查找特定类型的文件
  • 备份整个目录结构

方法对比总结

方法 特点 适用场景
os.listdir() 简单快速,返回当前目录内容 只需查看当前目录内容
glob.glob() 支持通配符匹配,可递归搜索 按模式查找特定类型文件
os.walk() 完整递归遍历,提供目录结构 需要处理整个目录树结构

根据你的需求选择最合适的方法:

  • 快速查看 → os.listdir()
  • 模式匹配 → glob.glob()
  • 递归遍历 → os.walk()

发表评论