Python 列出目录所有文件及文件夹的方法及示例代码

在Python中,可以使用os模块或glob模块来列出目录中所有的文件和文件夹。os模块提供了许多与操作系统相关的功能,包括文件和目录操作。本文主要介绍列出目录所有文件和文件夹的方法,以及相关的示例代码。

1、os模块

1)os.listdir()

os.listdir()是Python标准库中os模块提供的一个函数,用于返回指定目录中所有的文件和文件夹列表。该函数接受一个路径作为参数,并返回该路径下的所有条目的名称列表。

from os import listdir
from os.path import isfile, join
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]

import os

def list_files_and_folders(directory):
    for entry in os.listdir(directory):
        # 拼接完整的路径
        full_path = os.path.join(directory, entry)
        if os.path.isdir(full_path):
            print(f"文件夹:{entry}")
        else:
            print(f"文件:{entry}")

# 列出当前目录下所有文件和文件夹
current_directory = os.getcwd()
list_files_and_folders(current_directory)

2)os.walk()

os.walk()是Python标准库中os模块提供的一个强大的函数,用于遍历目录中的所有文件和子目录。该函数返回一个生成器,可以递归地访问指定目录及其子目录下的所有文件和文件夹。

os.walk(top, topdown=True, onerror=None, followlinks=False):

参数说明:

  • top:需要遍历的顶层目录路径。
  • topdown:可选参数,默认为True,表示遍历顺序是自顶向下,如果设置为False,遍历顺序将是自底向上。
  • onerror:可选参数,默认为None,用于处理遍历过程中的错误。
  • followlinks:可选参数,默认为False,如果设置为True,则会遍历符号链接指向的目录。

import os

# 指定目录路径
directory_path = '/path/to/your/directory'

# 使用os.walk()遍历目录
for root, dirs, files in os.walk(directory_path):
    # 打印当前目录
    print("当前目录:", root)

    # 打印当前目录下的子目录
    for dir_name in dirs:
        print("子目录:", os.path.join(root, dir_name))

    # 打印当前目录下的文件
    for file_name in files:
        print("文件:", os.path.join(root, file_name))

2、glob模块

glob是Python标准库中的一个模块,用于查找符合特定规则的文件路径名。它提供了简单且灵活的文件匹配功能,可以帮助你快速找到指定目录下符合特定模式的文件。

import glob

# 指定目录路径
directory_path = '/path/to/your/directory'

# 查找目录中的所有文件
files = glob.glob(directory_path + '/*')

# 查找目录中的所有文件夹
folders = glob.glob(directory_path + '/*/')

# 打印文件列表
print("文件列表:")
for file_path in files:
    print("文件:", file_path)

# 打印文件夹列表
print("\n文件夹列表:")
for folder_path in folders:
    print("文件夹:", folder_path)

3、pathlib模块

pathlib是Python标准库中的一个模块,用于处理文件路径和文件系统操作。它提供了一种更现代和面向对象的方式来处理文件和目录路径,相比于旧的os.path模块,使用pathlib更加简洁、直观。在Python 3.4及以上版本中,pathlib模块是内置的,无需安装其他依赖。

from pathlib import Path

def list_files_and_folders(directory_path):
    # 创建目录路径对象
    dir_path = Path(directory_path)

    # 列出目录下的所有文件和文件夹
    files = [f for f in dir_path.iterdir() if f.is_file()]
    folders = [f for f in dir_path.iterdir() if f.is_dir()]

    return files, folders

# 要列出的目录路径
directory_path = '/path/to/your/directory'

# 调用函数列出目录中的所有文件和文件夹
files, folders = list_files_and_folders(directory_path)

# 打印结果
print("目录中的文件:")
for file in files:
    print(file)

print("\n目录中的文件夹:")
for folder in folders:
    print(folder)

from pathlib import Path
folder = '/foo'
[f for f in Path(folder).glob('*') if f.is_file()]

推荐阅读
cjavapy编程之路首页