人嘛,总是会想办法偷懒。纪念一下最近身为文员工作写的脚本。文件名前后缀批量增删,特殊文件批量删除,文件名空格批量处理(英文空格是个坑),文件名特殊字符批量删除。大佬勿喷,我只是小弟。直接上代码
import os
import re
import string
import sys
def rename_cut_front(dir_path, cut_index):
file_num = 0
file_rename_fail = 0
file_names = os.listdir(dir_path)
for name in file_names:
sub_path = os.path.join(dir_path, name)
if os.path.isfile(sub_path):
file_num = file_num + 1 # 统计文件数量
# print(file_num)
if cut_index in name :
for s in name:
if s == cut_index: # 索引字符
index_num = name.index(s) # index_num为要删除的位置索引
# 采用字符串的切片方式删除编号
rename_enable = 1
new_name = name[index_num + 1:]
for name_check in file_names:
if new_name == name_check :
print(os.path.join(dir_path, name) + " the file is repeated after modification!")
file_rename_fail = file_rename_fail +1
rename_enable =0
break
if rename_enable == 1 :
os.rename(os.path.join(dir_path, name), os.path.join(dir_path, new_name))
break # 重命名成功,跳出内循环
else :
file_rename_fail = file_rename_fail + 1
continue
print(" Combined files : %d PS File Renamer: %d Fail: %d " %(file_num,file_num-file_rename_fail,file_rename_fail) )
def clean_space(text): ######转自六神就是我
""""
处理多余的空格
"""
match_regex = re.compile(u'[\u4e00-\u9fa5。\.,,::《》、\(\)()]{1} +(?<![a-zA-Z])|\d+ +| +\d+|[a-z A-Z]+')
should_replace_list = match_regex.findall(text)
order_replace_list = sorted(should_replace_list,key=lambda i:len(i),reverse=True)
for i in order_replace_list:
if i == u' ':
continue
new_i = i.strip()
text = text.replace(i,new_i)
return text
def rename_add_front(dir_path, before_content):
file_names = os.listdir(dir_path)
for name in file_names: # 如果某个文件名在file_names内
old_name = dir_path + '\\' + name # 获取旧文件的名字,注意名字要带路径名
new_name = dir_path + '\\' + before_content + name # 定义新文件的名字,这里给每个文件名前加了前缀 a_
os.rename(old_name, new_name) # 用rename()函数重命名
print(new_name) # 打印新的文件名字
def rename_add_behind(dir_path, follows_content):
file_names = os.listdir(dir_path)
for name in file_names: # 如果某个文件名在file_names内
old_name = dir_path + '\\' + name # 获取旧文件的名字,注意名字要带路径名
portion = os.path.splitext(name) # 将文件名拆成名字和后缀
new_name = dir_path + '\\' + portion[0] + follows_content + portion[1]
os.rename(old_name, new_name) # 用rename()函数重命名
print(new_name) # 打印新的文件名字
def file_del(dir_path, postfix):
file_nums = 0
remove_num = 0
file_names = os.listdir(dir_path)
for name in file_names: # 如果某个文件名在file_names内
sub_path = os.path.join(dir_path, name)
if os.path.isfile(sub_path):
file_nums = file_nums + 1 # 统计文件数量
old_name = dir_path + '\\' + name # 获取旧文件的名字,注意名字要带路径名
portion = os.path.splitext(name) # 将文件名拆成名字和后缀
if portion[1] == postfix:
remove_num = remove_num + 1
os.remove(old_name)
print(old_name + " has been deleted!") # 打印新的文件名字
print(" Combined files : %d Remove files: %d " % (file_nums, remove_num))
def delete_space(dir_path):
file_num = 0
file_rename_fail = 0
file_names = os.listdir(dir_path)
for name in file_names:
sub_path = os.path.join(dir_path, name)
if os.path.isfile(sub_path):
file_num = file_num + 1 # 统计文件数量
# print(file_num)
portion = os.path.splitext(name) # 将文件名拆成名字和后缀
rename_enable = 0
Original_name = portion[0]
if ' ' in Original_name :
rename_enable = 1
new_name = Original_name.strip(' ') + portion[1] #去除文件首尾空格
new_name = clean_space(new_name) #去除文件空格
else:
continue
if rename_enable == 1 :
for name_check in file_names:
if new_name == name_check:
print(os.path.join(dir_path, name) + " the file is repeated after modification!")
file_rename_fail = file_rename_fail + 1
rename_enable = 0
break
if rename_enable == 1:
os.rename(os.path.join(dir_path, name), os.path.join(dir_path, new_name))
print(" Combined files : %d PS File Renamer: %d Fail: %d " % (file_num, file_num - file_rename_fail, file_rename_fail))
def delete_special_characters(dir_path,special_characters):
file_num = 0
file_rename_fail = 0
file_names = os.listdir(dir_path)
for name in file_names:
sub_path = os.path.join(dir_path, name)
if os.path.isfile(sub_path):
file_num = file_num + 1 # 统计文件数量
# print(file_num)
portion = os.path.splitext(name) # 将文件名拆成名字和后缀
rename_enable = 0
Original_name = portion[0]
if special_characters in Original_name:
rename_enable = 1
new_name = Original_name.replace(special_characters, "") + portion[1]
else:
continue
# print(new_name) # 打印新的文件名字
if rename_enable == 1 :
for name_check in file_names:
if new_name == name_check:
print(os.path.join(dir_path, name) + " the file is repeated after modification!")
file_rename_fail = file_rename_fail + 1
rename_enable = 0
break
if rename_enable == 1:
os.rename(os.path.join(dir_path, name), os.path.join(dir_path, new_name))
print(" Combined files : %d PS File Renamer: %d Fail: %d " % (file_num, file_num - file_rename_fail, file_rename_fail))
# if __name__ == "__main__":
#
# # path为批量文件的文件夹的路径
# path = 'C:\\Users\ZKK\Desktop\Test'
#
# # rename_add_front(path, "附件-X ") #文件名前缀批量增加
# rename_cut_front(path, 'X') #文件名前缀批量删除
# # rename_add_behind(path, "-截图") #文件名后缀批量增加
# # file_del(path,'.pdf') #批量删除特殊文件
# # delete_space(path) #文件名空格批量处理
# # delete_special_characters(path, "-截图") #文件名内特殊字符批量删除
#