您的位置:

使用Python的os模块中的listdir函数获取目录中的文件列表

介绍

Python是一种流行的编程语言,具有强大的库和模块。其中一个有趣的模块是os模块,提供了与操作系统进行交互的方法。在本篇文章中,我们将专注于使用os模块中的listdir函数获取目录中的文件列表的方法。这是一个非常常见的任务,我们将使用Python代码演示如何获取目录中的文件列表。

正文

1. listdir函数的基本用法

listdir是os模块中的函数,可以列出指定目录中所有文件和文件夹的名称。它的用法非常简单,只需要向它传递一个目录路径即可:

import os

# 列出当前目录下的文件和文件夹
files = os.listdir('.')
print(files)

运行上面的代码后,会列出当前目录下的所有文件和文件夹的名称,并将它们存储在一个list中。

2. 使用列表推导式过滤文件列表

listdir函数默认列出目录中的所有文件和文件夹的名称,但我们只需要列出其中的文件名称,可以使用Python中的列表推导式来过滤结果:

import os

# 列出当前目录下的所有文件名称
files = [file for file in os.listdir('.') if os.path.isfile(os.path.join('.', file))]
print(files)

使用列表推导式,我们可以将文件夹排除在结果之外,只显示文件名称。

3. 使用递归函数列出子目录中的文件

如果要列出目录中所有子目录中的文件,我们可以使用递归函数。下面的代码演示了如何递归地列出目录中的文件:

import os

def list_files(path):
    # 列出路径中的所有文件和文件夹的名称
    files = os.listdir(path)
    # 循环遍历
    for file in files:
        # 判断是否为文件
        if os.path.isfile(os.path.join(path, file)):
            # 如果是文件,则打印出文件名
            print(os.path.join(path, file))
        # 如果是目录,则递归调用这个函数
        else:
            list_files(os.path.join(path, file))

# 列出当前目录下的所有文件
list_files('.')

该函数使用os.listdir获取指定目录中所有文件和文件夹的名称。然后,如果是一个文件,则打印出文件名;如果是一个目录,则递归调用list_files函数来列出这个目录中的文件。

4. 使用正则表达式过滤文件名

有时候,我们需要列出目录中指定扩展名的所有文件,比如列出所有的.jpg文件。这时,我们可以使用正则表达式过滤文件名:

import os
import re

# 列出当前目录下所有的.jpg文件
pattern = re.compile('.*\.jpg$')
files = [file for file in os.listdir('.') if re.match(pattern, file)]
print(files)

在上面的代码中,我们使用re.compile创建了一个正则表达式模式,该模式匹配以.jpg结尾的文件名。然后使用列表推导式并且结合os.listdir,过滤出所有符合这个条件的文件名。

小结

在本篇文章中,我们重点介绍了使用os模块中的listdir函数获取目录中的文件列表的方法,并从多个方面对该函数做了详细的阐述:

  1. listdir函数的基本用法
  2. 使用列表推导式过滤文件列表
  3. 使用递归函数列出子目录中的文件
  4. 使用正则表达式过滤文件名

通过这些方法,我们可以灵活地列出符合我们需求的文件列表。