一、需求
在一个文件夹中,里面有一些不想要的文件,我想删除这些文件
比如:我想删除用户必读这个文件,同时把sql文件的前缀网站删除掉
二、实现
from json.tool import main
import os
import re
class FileRemoveAndReName:
def __init__(self):
self.root_dir = r'C:\Users\RION\Desktop\task_config_pro' # 文件绝对路径
self.remove_name = '用户必读' # 想要删除的文件,文件名的某一部分字符串
self.pat_rename = r'\[www.javazx.com\]' # 正则匹配想要修改[删除]的字符串内容
# 1、读取根目录
def all_files_path(self):
file_list = []
for root, dirs, files in os.walk(self.root_dir): # 分别代表根目录、子目录、文件名
for file in files: # 遍历文件
file_path = os.path.join(root, file) # 获取文件绝对路径
file_list.append(file_path) # 将文件路径添加进列表
return file_list # 放回文件的绝对路径
# 2、数据筛选
def effctive_file(self,file_list):
rel_datas = []
for i in file_list:
if '用户必读' in i: # 如果删除的文件部分字符串在路径中则进行删除
os.remove(i)
data = []
pat = self.pat_rename
match_ret = re.sub(pattern=pat,repl='',string=i)
# re.sub(正则匹配模式,替换的内容,被匹配的字符串)
data.append(i)
data.append(match_ret)
rel_datas.append(data)
return rel_datas
# 3、文件重命名
def rename_file(self,rel_datas):
for i in rel_datas:
print(*i)
os.rename(*i)
@property
def main(self):
try:
ret = self.all_files_path()
rel_datas = self.effctive_file(ret)
self.rename_file(rel_datas)
except Exception as e:
self.main # 这里是防止中文发生error,出现中文error则重新运行一遍
if __name__ == '__main__':
frar = FileRemoveAndReName()
frar.main
- 实现效果