循环遍历子目录,到示例文件

mr_*_*man 4 python loops mkdir subdirectory

以下代码从目录1中选择随机的文件样本(在本例中为50),并将它们复制到具有相同名称的新文件夹.

但是,我需要从中采样数百个文件夹(并复制到具有相同名称的新文件夹).

如何调整代码的第一部分,以便遍历所有子目录,并将示例移动到具有相同名称的新文件夹.(所以sub dir 1的样本转到dir 1,sub dir 2的样本转到dir 2等)

import os 
import shutil 
import random 
from shutil import copyfile

sourcedir = '/home/mrman/dataset-python/train/1/'
newdir  = '/home/mrman/dataset-python/sub-train/1'


filenames = random.sample(os.listdir(sourcedir), 50)
for i in filenames:
    shutil.copy2(sourcedir + i, newdir)
Run Code Online (Sandbox Code Playgroud)

idj*_*jaw 5

你正在寻找使用os.walk.查看文档

运行以下内容以了解其工作原理,并阅读文档以了解如何将其用于您的解决方案.最终,将会发生的是,您将从您提供的路径中遍历整个目录结构,每次迭代将为您提供当前路径,该级别中的所有目录以及所有文件.

另外,假设您想要在某个特定的完整路径上执行操作,然后确保在创建路径时利用os.path.join.

your_path = "/some/path/you/want"
for path, dirs, files in os.walk(your_path):
    print(path)
    print(dirs)
    print(files)
Run Code Online (Sandbox Code Playgroud)