Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将过程应用于多个子目录中的文件_Python - Fatal编程技术网

Python 将过程应用于多个子目录中的文件

Python 将过程应用于多个子目录中的文件,python,Python,我正在尝试将一个过程应用于数千个文件,但在许多子目录中 我想先使用os.listdir()列出所有子目录,然后再查找每个子目录并应用我的过程。我的树木如下: subdir1 -> file, file, file, ..... subdir2 -> file, file, file, ..... Directory -> subdir3 -> file, file, file, .....

我正在尝试将一个过程应用于数千个文件,但在许多子目录中

我想先使用
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)

请分享您尝试过的示例代码。使用
os.walk()
[如果我使用函数
print(fname),这似乎有效
只是检查一下,我确实有子目录中的所有文件,但我不清楚它是如何工作的,请解释一下好吗?在这种情况下,当我检查每个fname的路径时,它是不正确的。/dir/fnam,没有子目录