第一次发技术贴;
主要是最近学习一些资源, 从一些网站上找的资源, 发现文件名中有大量的广告词, 还有大量的广告文件, 看上去贼难受, 就写了个代码去删除了。
时间有限, 应该不是最优的解法,只不过用到了递归,所以和老哥们分享一下啊
删除文件的代码
[Python] 纯文本查看 复制代码 """
-- -*- coding: utf-8 -*-
-- @Description: 批量删除指定尾缀的文件
-- @Date: 2022/12/14 20:02
-- @Author: FlyPig
-- @FileName: demo02_batch_remove.py
"""
import os
def batch_remove(file_ends: str, file_path: str, is_recursion: bool = False) -> None:
"""
批量删除文件
:param file_ends: 文件的尾缀
:param file_path: 文件夹路径
:param is_recursion: 是否进行递归删除
:return: 没有返回值
"""
sub_files = list()
# 获取该目录下所有的子目录, 列表中存储文件的绝对路径
if os.path.isdir(file_path):
sub_files = [os.path.join(file_path, i) for i in os.listdir(file_path)]
# print(*sub_files)
# 遍历该目录, 判断是否有目标尾缀的文件,有进行删除
if sub_files:
for sub_file in sub_files:
if os.path.isfile(sub_file) & sub_file.endswith(file_ends):
print(f'删除的文件为:{sub_file}')
os.remove(sub_file)
elif is_recursion & os.path.isdir(sub_file):
# 表示该路径是一个目录, 进行递归调用
batch_remove(file_ends, sub_file, True)
if __name__ == '__main__':
# 要删除的文件的后缀
target_ends = ''
# 要删除的目录的路径
path = r""
# path = r"D:/learn file/big data/other/test/"
batch_remove(target_ends, path, is_recursion=False)
修改名称的代码
[Python] 纯文本查看 复制代码 """
-- -*- coding: utf-8 -*-
-- @Description: 批量修改文件名中的一些水印
-- @Date: 2022/12/14 20:29
-- @Author: FlyPig
-- @FileName: demo03_update_filename.py
"""
import os.path
def update_filename(file_path: str, tar_str: str, is_recursion: bool = False) -> None:
"""
修改文件及目录名
:param file_path: 修改的文件夹路径
:param tar_str: 要删除的文件名中的字符
:param is_recursion: 是否递归
:return: 没有返回值
"""
sub_files = list()
if os.path.isdir(file_path):
# 修改目录名
tmp = '\\'.join(file_path.split("\\")[0:-1])
new_file_name = os.path.join(tmp, file_path.split("\\")[-1].replace(tar_str, ''))
os.rename(file_path, new_file_name)
print(f"原名称{file_path} ---> 改为{new_file_name}")
sub_files = [os.path.join(file_path, i) for i in os.listdir(new_file_name)]
# print(*sub_files)
# 该目录不为空,进行修改
if sub_files:
for sub_file in sub_files:
if os.path.isfile(sub_file) and tar_str in sub_file:
# 删除文件名中的指定字符
tmp = '\\'.join(sub_file.split("\\")[0:-1])
new_file_name = os.path.join(tmp, sub_file.split("\\")[-1].replace(tar_str, ''))
print(f"原名称{sub_file} ---> 改为{new_file_name}")
os.rename(sub_file, new_file_name)
elif os.path.isdir(sub_file) and is_recursion:
# 进行递归调用
update_filename(sub_file, tar_str, is_recursion)
if __name__ == '__main__':
# 要修改的目录
file = r""
# 要删除的文件名中的广告词
tar = ""
update_filename(file, tar, True)
|