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

需求

给出指定目录,通过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)

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

 

posted @ 2018-07-16 10:21  ZhuGaochao  阅读(63082)  评论(1编辑  收藏  举报