如何根据 python 中文件名的相似性将文件移动到文件夹

How to move files to folders based on the similarity of filenames in python

我有很多文件,例如:

我想把这些文件按照相似的名字移动到文件夹中,例如: _form into the _form folder, _gallery into the _gallery folder, 75_gallery into the 75_gallery folder,以及 75_gallery_from_home to 75_gallery_from_home folder.

我试图了解文件在 _number 部分出现之前是相同的,我不知道如何拆分文件名然后将它们移动到各自的文件夹中。请帮助我

您可以使用以下内容作为解决方案的起点。假设您已经排除了文件扩展名并且只有文件名在变量中,下面的代码显示了如何使用 regex 来获取文件名的初始部分,以便您 可以框出要移动文件的文件夹名称。

import re

filename = "75_gallery_2686WYWENDD"
x = re.split("_", filename)
str=''
for k in x:
    if(re.search("^[0-9][0-9]",k)):
        if(len(k)>2):
            #ignore this part of file name
            print('ignoring ' + k)
        else:
            str = str + k
    else:
        str = str + '_' + k
print('folder name : ' + str)

您可以使用以下脚本提取相应的文件夹名称,创建文件夹,并一次性将文件移动到文件夹中。

import os
import re
import shutil

pattern = "_[0-9]+"

file_names = os.listdir(".")
for file_name in file_names:
    split = re.split(pattern, file_name)

    if len(split) == 1:
        print(f"Cannot extract the corresponding folder name from file {file_name}.")
    else:
        folder_name = split[0]
        
        if not os.path.exists(folder_name):
            os.mkdir(folder_name)

        shutil.move(file_name, os.path.join(folder_name, file_name))        

正则表达式模式允许您在第一个下划线后跟任意数字拆分文件名。