python - 将过程应用于许多子目录中的文件
问题描述
我正在尝试将程序应用于数千个文件,但在许多子目录中。
我正在考虑os.listdir()
首先列出所有子目录,而不是查看每个子目录并应用我的程序。我的树状如下:
subdir1 -> file, file, file, .....
subdir2 -> file, file, file, .....
Directory -> subdir3 -> file, file, file, .....
subdir4 -> file, file, file, .....
subdir5 -> file, file, file, .....
我可以访问子目录列表,os.listdir()
但不能访问子目录中的文件,你知道如何继续吗?谢谢
编辑:当使用 MikeH 方法时,在我的情况下:
import os
from astropy.io import fits
ROOT_DIR='./'
for dirName, subdirList, fileList in os.walk(ROOT_DIR):
for fname in fileList:
hdul = fits.open(fname)
我得到错误:
FileNotFoundError: [Errno 2] No such file or directory: 'lte08600-2.00+0.5.Alpha=+0.50.PHOENIX-ACES-AGSS-COND-2011-HiRes.fits'
事实上,如果我尝试检查文件上的路径,print(os.path.abspath(fname)
我可以看到路径是错误的,它会错过像 /root/dir/fnam 这样的子目录而不是 root/dir/subdir/fname 这有什么问题?
EDIT2:就是这样,我发现出了什么问题,我必须加入文件的路径,os.path.join(dirName,fname)
而不是fname
每次都写入。谢谢 !
解决方案
像这样的东西应该适合你:
import os
ROOT_DIR='./'
for dirName, subdirList, fileList in os.walk(ROOT_DIR):
for fname in fileList:
# fully qualified file name is ROOT_DIR/dirname/fname
performFunction(dirName, fname)
推荐阅读
- html - 如何在具有纵横比的 div 中设置居中文本?
- ubuntu - 如何在 Ubuntu Linux 20.04 上安装 kubectx?
- angular - 在子组件上使用 `*ngFor` 比包裹在 `` 在 Chrome 开发工具中
- mysql - 子查询在本地机器上运行良好。但在服务器上没有。为什么?
- python - 使用多重身份验证检查共享点站点的用户凭据
- python - Python:在函数中生成熊猫图但不显示
- firebase - 从 Firestore 数据库中检索字段信息
- java - (AWS + Credentials) TextractClientBuilder 类型的 withCredentials(AWSStaticCredentialsProvider) 方法未定义
- postgresql - 找不到网络参数文件和兼容区域未配置/无法访问,corda
- python-3.x - 如何在 Pycharm 中使用 Excel 作为一种字典。我想使用索引来打印值