我正在尝试将一个过程应用于数千个文件,但在许多子目录中。
我想先使用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 这有什么问题?
编辑2: 就是这样,我发现了问题所在,我必须加入文件的路径,写入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)