python - 有没有办法将随机文件从源复制到目标?

标签 python

我正在处理 257 个包含图像的文件夹。我想复制每个文件夹中 80% 的图像,并将它们复制到一个名为 Training 的新文件夹中。 257 个文件夹中每个文件夹中剩余的 20% 的图像将被复制到一个名为 Test 的新文件夹中。最后,我将有两个新文件夹 Training 和 Test,其中 Training 包含从我的 257 个文件夹中随机选择的图像的 80%,而 Test 包含 20%。

是否有任何 Python 函数可以实现这一点?我做了一些研究,我发现的只是函数 shutil,它将所有文件从源文件夹复制到目标文件夹。

谢谢

最佳答案

您可以使用如下脚本:

import os
import shutil
import random

SOURCES = [...]  # autogenerated or predefined constant

TRAINING = "Training"
TEST = "Test"


def main():
    os.makedirs(TRAINING, exist_ok=True)
    os.makedirs(TEST, exist_ok=True)

    for src_dir in SOURCES:
        files = os.listdir(src_dir)
        random.shuffle(files)

        sep = round(len(files) * 0.8)

        for file in files[:sep]:
            shutil.copy(
                os.path.join(src_dir, file),
                TRAINING,
            )

        for file in files[sep:]:
            shutil.copy(
                os.path.join(src_dir, file),
                TEST,
            )


if __name__ == "__main__":
    main()

请注意,当复制到同一目的地时,具有相同文件名的文件会被静默覆盖。

关于python - 有没有办法将随机文件从源复制到目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203863/

相关文章:

python - 如何将 C++ 中的空字符序列转换为 Python 中的等效字符序列?

python - 使用python将Linux文件中的信息解析到Windows

python - Azure Api 和 ChatGPT 的问题 (python)

python - 将 "Q12019"对象转换为 datetime64

python - **recurPower** 我明白了,但我不明白

python - Zamzar API 下载失败

python - Python中数据点的平均趋势曲线

带有嵌套 for 循环的 Python 代码太慢

python - 列表推导式打破内循环

python - 如何提取数据集中一分钟的每个数据点?