我正在尝试按此顺序执行以下操作:

使用os.walk()可以查看每个目录。
每个目录都有subfolders,但是我只对第一个subfolder感兴趣。因此目录如下:

/home/RawData/SubFolder1/SubFolder2

例如。我希望在RawData2中具有在SubFolder1级别停止的文件夹。

事实是,似乎os.walk()遍历了RawData文件夹的全部,而且我不确定如何使其停止。

以下是到目前为止的内容-我已经尝试了其他一些将变量dirs替换为root或文件的组合,但这似乎并不能满足我的需求。
import os

for root, dirs, files in os.walk("/home/RawData"):

    os.chdir("/home/RawData2/")
    make_path("/home/RawData2/"+str(dirs))

最佳答案

我建议您改用glob。

正如关于glob的帮助所述:

glob(pathname)
    Return a list of paths matching a pathname pattern.

    The pattern may contain simple shell-style wildcards a la
    fnmatch. However, unlike fnmatch, filenames starting with a
    dot are special cases that are not matched by '*' and '?'
    patterns.

因此,您的模式是每个第一级目录,我认为应该是这样的:
/root_path/*/sub_folder1/sub_folder2

因此,您从根本开始,在第一级获得所有内容,然后寻找sub_folder1/sub_folder2。我认为这可行。

放在一起:
from glob import glob

dirs = glob('/root_path/*/sub_folder1/sub_folder2')

# Then iterate for each path
for i in dirs:
    print(i)

关于python - 使os.walk以非标准方式工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33189128/

10-10 05:51