Python获取指定目录下所有子目录、所有文件名(嵌套目录下所有文件路径)

时间:2024-03-12 19:19:18

需求

给出指定目录,通过Python获取指定目录下的所有子目录,所有(子目录下)文件名:

实现

import os
def file_name(file_dir):
    for root, dirs, files in os.walk(file_dir):
        print(\'root_dir:\', root)  # 当前目录路径
        print(\'sub_dirs:\', dirs)  # 当前路径下所有子目录
        print(\'files:\', files)  # 当前路径下所有非目录子文件


file_name(\'D:\stock_data\')

结果

主要用到 os 模块

 升级版

数据目录结构如下:

codes                  
├── 20200102           
│   ├── A              
│   │   ├── A2001.csv  
│   │   ├── A2003.csv  
│   │   ├── A2005.csv  
│   │   ├── A2007.csv  
│   │   ├── A2009.csv  
│   │   └── A2011.csv  
│   ├── AL             
│   │   ├── AL2001.csv 
│   │   ├── AL2002.csv 
│   │   ├── AL2003.csv 
│   │   ├── AL2004.csv 
│   │   ├── AL2005.csv 
│   │   ├── AL2006.csv 
│   │   ├── AL2010.csv 
│   │   ├── AL2011.csv 
│   │   └── AL2012.csv 
│   └── B              
│       ├── B2001.csv  
│       ├── B2002.csv  
│       ├── B2003.csv  
│       ├── B2004.csv  
│       └── B2005.csv  
└── 20200103           
    ├── A              
    │   ├── A2001.csv  
    │   ├── A2003.csv  
    │   ├── A2005.csv  
    │   ├── A2007.csv  
    │   ├── A2009.csv  
    │   └── A2011.csv  
    ├── AL             
    │   ├── AL2001.csv 
    │   ├── AL2002.csv 
    │   ├── AL2003.csv 
    │   ├── AL2004.csv 
    │   ├── AL2009.csv 
    │   ├── AL2010.csv 
    │   ├── AL2011.csv 
    │   └── AL2012.csv 
    └── B              
        ├── B2001.csv  
        ├── B2002.csv  
        ├── B2003.csv  
        ├── B2004.csv  
        └── B2005.csv  

现有上述嵌套目录结构,需要获取最深层文件的路径:code/20200101/A/A2001.csv

实现

 如果直接用os的话也是可以实现,但是感觉比较麻烦,这里使用 pathlib 库来处理:

from pathlib import Path

for p in Path(\'codes/\').iterdir():
    for s in p.rglob(\'*.csv\'):  
         # yield s
          print(s)

# 这样就可以获取到所有嵌套文件的路径