首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘Python高效获取文件夹下所有文件名的方法

发布于 2025-06-24 15:30:22
0
1110

在Python中,获取一个文件夹下所有文件名是一个常见的需求。以下是一些高效的方法来实现这一目标。方法一:使用os.listdir()和os.path.join()os.listdir()函数可以列出...

在Python中,获取一个文件夹下所有文件名是一个常见的需求。以下是一些高效的方法来实现这一目标。

方法一:使用os.listdir()os.path.join()

os.listdir()函数可以列出指定路径下的文件和文件夹名。结合os.path.join()函数,可以构建完整的文件路径。

import os
def list_files_in_directory(directory): return [file for file in os.listdir(directory) if os.path.isfile(os.path.join(directory, file))]
# 使用示例
directory_path = '/path/to/your/directory'
files = list_files_in_directory(directory_path)
print(files)

代码说明

  1. os.listdir(directory):列出目录中的文件和文件夹名。
  2. os.path.isfile(path):检查指定的路径是否是一个文件。
  3. 列表推导式用于筛选出文件,而不是文件夹。

方法二:使用os.scandir()

os.scandir()是一个更高效的方法,因为它返回一个迭代器,可以遍历目录中的所有条目,而不是一次性将它们全部加载到内存中。

import os
def list_files_in_directory(directory): with os.scandir(directory) as entries: for entry in entries: if entry.is_file(): yield entry.name
# 使用示例
directory_path = '/path/to/your/directory'
files = list_files_in_directory(directory_path)
for file in files: print(file)

代码说明

  1. os.scandir(directory):返回一个迭代器,遍历目录中的所有条目。
  2. entry.is_file():检查当前条目是否是一个文件。
  3. 使用yield关键字,将函数转换为生成器,这样可以逐个处理文件名,而不是一次性加载所有文件名。

方法三:使用pathlib

pathlib模块是Python 3.4及以上版本中提供的一个现代、面向对象的文件系统路径库。

from pathlib import Path
def list_files_in_directory(directory): return [file.name for file in Path(directory).iterdir() if file.is_file()]
# 使用示例
directory_path = '/path/to/your/directory'
files = list_files_in_directory(directory_path)
print(files)

代码说明

  1. Path(directory):创建一个Path对象,代表指定的目录。
  2. iterdir():返回一个迭代器,遍历目录中的所有条目。
  3. file.is_file():检查当前条目是否是一个文件。

总结

以上三种方法都可以高效地获取文件夹下的所有文件名。选择哪种方法取决于你的具体需求和个人偏好。os.scandir()pathlib通常更现代,更符合Pythonic风格。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流