簡體   English   中英

如何將每 500 個文件移動到不同的文件夾中

[英]How to move every 500 files into different folders

作為 Python 的初學者,我需要您的幫助,因為我不知道如何根據需要創建這樣的腳本。 為了給你一個整體的想法,我有一個文件夾Folder_1 ,其中包含來自.png視頻的 50 000 個不同的幀:

Folder_1 :
    picture_00001
    picture_00002
    picture_00003
    picture_00004
    ...
    picture_50000

由於我的 Windows 資源管理器在處理如此大量的圖片時運行得不太好,我需要將它們全部移動到不同的文件夾中,以降低 RAM 消耗並讓我在不考慮 50 000 張圖片的情況下處理批處理。

因此,我的目標是擁有一個腳本,該腳本將簡單地將前 500 個文件移動到文件夾sub_folder1 ,然后將 500 個文件移動到sub_folder2等旁邊......文件夾也需要使用腳本創建:

Folder_1
    sub_folder1
         picture_00001
         picture_00002
         ...
         picture_00500

    sub_folder2
         picture_00501
         picture_00502
         ...
         picture_01000

我開始使用for i in range(500)但我不知道該寫什么。

跳得夠清楚了,否則讓我知道,我會盡力做到更精確。

預先感謝您的幫助。

一種可能的解決方案是:

首先找出目錄中的.png文件名。 您可以通過使用os.listdir(<dir>)返回文件名列表來實現此目的,然后對其進行迭代並使用fnmatch僅選擇正確的文件。

然后設置增量(在本例中為10 ,在您的500 ),迭代生成器range(0, len(files), increment) ,創建一個文件夾,如果它不存在,然后將文件分塊移動。

解決方案:

from fnmatch import fnmatch
import os
import shutil

def get_filenames(root_dir):
    pattern = '*.png'
    files = []
    for file in os.listdir(root_dir):
        if fnmatch(file, pattern):
            files.append(file)
    return files

def distribute_files():
    root_dir = r"C:\frames"
    files = get_filenames(root_dir)
    increment = 10

    for i in range(0, len(files), increment):
        subfolder = "files_{}_{}".format(i + 1, i + increment)
        new_dir = os.path.join(root_dir, subfolder)
        if not os.path.exists(new_dir):
            os.makedirs(new_dir)
        for file in files[i:i + increment]:
            file_path = os.path.join(root_dir, file)
            shutil.move(file_path, new_dir)


if __name__ == "__main__":
    distribute_files()

希望能幫助到你。

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM