![](/img/trans.png)
[英]Find duplicates files and folders in directory and move the duplicates to different folders in python
[英]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.