批量替换文件名中的广告词和删除指定后缀文件

查看 152|回复 9
作者:愚者—我   
第一次发技术贴;
主要是最近学习一些资源, 从一些网站上找的资源, 发现文件名中有大量的广告词, 还有大量的广告文件, 看上去贼难受, 就写了个代码去删除了。
时间有限, 应该不是最优的解法,只不过用到了递归,所以和老哥们分享一下啊
删除文件的代码
[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)

递归, 文件

wuai4444   

谢谢楼主分享。
umbrella_red   

可以批量替换后缀挺不错。
ok667   

谢谢楼主分享
haidemili   

学到了…谢谢楼主分享…批量改名不错
tjmengzi   

感谢分享 不错
h512h   

…谢谢楼主分享
benmagic   

谢谢楼主分享…
莲绮梦   

谢谢分享 不错 收藏了 下次就试试
huaxincanmeng   

感谢分享,赞一个
您需要登录后才可以回帖 登录 | 立即注册

返回顶部