如何在Python中列出目录中的所有文件?

如何在Python中列出目录中的所有文件?

在Python中,使用os模块可以方便地实现列出目录中的所有文件的功能。os模块是Python中与操作系统交互的主要模块,提供了许多有用的方法。

阅读更多:Python 教程

列出目录中的所有文件

使用os模块中的listdir()方法可以列出指定目录中的所有文件和目录的名称,返回一个包含所有文件名称的列表。

示例代码如下:

import os

# 获取当前目录
path = os.getcwd()

# 列出指定目录中的所有文件
files = os.listdir(path)

# 输出所有文件名
for file in files:
    print(file)

运行上述代码,会输出当前目录中的所有文件名。

注意:listdir()方法只会列出当前路径下的所有文件和目录的名称,不包括子目录中的内容。

列出目录中的所有文件和子目录

如果需要列出目录中的所有文件和子目录内容,可以使用os.walk()方法。os.walk()方法是一个目录遍历器,返回的是一个三元组(dirpath, dirnames, filenames)

  • dirpath表示遍历的目录路径
  • dirnames表示遍历的目录下的所有子目录名称的列表
  • filenames表示遍历的目录下的所有文件名称的列表

示例代码如下:

import os

# 获取当前目录
path = os.getcwd()

# 遍历目录中的内容
for dirpath, dirnames, filenames in os.walk(path):
    # 输出目录路径
    print('Directory: ', dirpath)

    # 输出子目录名称
    for dirname in dirnames:
        print('Subdirectory: ', dirname)

    # 输出文件名称
    for filename in filenames:
        print('File: ', filename)

运行上述代码,会输出整个目录结构中的所有文件和子目录内容。

过滤指定类型的文件

如果只需要列出某一类型的文件,可以使用glob()方法或者列表解析来实现。

使用glob()方法可以匹配符合特定模式的文件名称,返回符合模式的所有文件名称的列表。示例代码如下:

import glob

# 获取当前目录
path = '*'

# 匹配所有txt文件
files = glob.glob(path + '/*.txt')

# 输出找到的txt文件名称
for file in files:
    print(file)

上述代码会匹配当前目录中所有的.txt文件,并且输出它们的文件名。glob()方法中'*'表示任意字符,表示匹配当前目录下的所有文件夹名称。因此path + '/*.txt'表示在当前目录下搜索所有的.txt文件。

使用列表解析也可以方便地筛选符合条件的文件。示例代码如下:

import os

# 获取当前目录
path = os.getcwd()

# 列出所有文件
files = os.listdir(path)

# 列出所有txt文件
txt_files = [file for file in files if file.endswith('.txt')]

# 输出所有txt文件名
for file in txt_files:
    print(file)

上述代码先列出了所有的文件,再用列表解析过滤出所有的.txt文件。if file.endswith('.txt')表示只选择文件名以.txt结尾的文件。

结论

os模块提供了很多方法来方便地实现列出目录中的所有文件的功能,可以根据需求选择相应的方法。常用的方法有listdir()walk(),可以使用列表解析或者glob()方法来过滤指定类型的文件。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程