找回密码
 立即注册
搜索
到手67.99元!阿里云轻量2核2G云服务器
查看: 5|回复: 0

Python获取文件夹所有文件名四种常用方法

[复制链接]

708

主题

0

回帖

11

积分

管理员

积分
11
发表于 昨天 15:26 | 显示全部楼层 |阅读模式
1. os.listdir () 最简单(只返回名称,不含完整路径)

  1. import os

  2. folder_path = r"D:\test"  # 目标文件夹路径

  3. # 获取文件夹内所有文件+文件夹名称列表
  4. all_names = os.listdir(folder_path)
  5. print(all_names)
复制代码

2. os.scandir () 效率更高(推荐遍历大量文件)

  1. import os

  2. path = r"D:\test"
  3. file_list = []
  4. with os.scandir(path) as entries:
  5.     for entry in entries:
  6.         # entry.name:文件名;entry.path:完整路径
  7.         file_list.append(entry.name)
  8. print(file_list)
复制代码

3. glob 通配符筛选,可只拿文件、排除文件夹
全部内容(文件 + 子文件夹)

  1. from glob import glob

  2. files = glob(r"D:\test\*")  # 带完整路径
  3. # 只想纯文件名:[os.path.basename(i) for i in files]
  4. print(files)
复制代码

只获取指定后缀文件(比如所有 txt)

  1. txt_files = glob(r"D:\test\*.txt")
复制代码

4. pathlib

  1. from pathlib import Path

  2. p = Path(r"D:\test")
  3. # 所有条目名称
  4. all_files = [f.name for f in p.iterdir()]
  5. print(all_files)

  6. # 只筛选文件(排除文件夹)
  7. only_files = [f.name for f in p.iterdir() if f.is_file()]

  8. # 递归遍历所有子文件夹内全部文件
  9. all_recursive = [f.name for f in p.rglob("*") if f.is_file()]
复制代码

常用小需求汇总
1.只获取文件,不要文件夹

  1. import os
  2. path = r"D:\test"
  3. files = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
复制代码

2.获取文件完整绝对路径

  1. import os
  2. path = r"D:\test"
  3. full_paths = [os.path.join(path, name) for name in os.listdir(path)]
复制代码

3.递归遍历所有子文件夹里所有文件

  1. import os
  2. def get_all_file(root_dir):
  3.     res = []
  4.     for root, dirs, files in os.walk(root_dir):
  5.         for file in files:
  6.             res.append(os.path.join(root, file))
  7.     return res

  8. print(get_all_file(r"D:\test"))
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|skypiea

GMT+8, 2026-7-29 06:39 , Processed in 0.043247 second(s), 19 queries .

Powered by skypiea

快速回复 返回顶部 返回列表