需求
给出指定目录,通过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) # 这样就可以获取到所有嵌套文件的路径