如何根据 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))
正则表达式模式允许您在第一个下划线后跟任意数字拆分文件名。
我有很多文件,例如:
我想把这些文件按照相似的名字移动到文件夹中,例如:
_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))
正则表达式模式允许您在第一个下划线后跟任意数字拆分文件名。