愚者—我 发表于 2022-12-14 20:43

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

第一次发技术贴;
主要是最近学习一些资源, 从一些网站上找的资源, 发现文件名中有大量的广告词, 还有大量的广告文件, 看上去贼难受, 就写了个代码去删除了。
时间有限, 应该不是最优的解法,只不过用到了递归,所以和老哥们分享一下啊


删除文件的代码

"""
-- -*-   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 =

    # 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)


修改名称的代码
"""
-- -*-   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("\\"))
      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 =

    # 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("\\"))
                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 发表于 2022-12-14 21:22


谢谢楼主分享。

umbrella_red 发表于 2022-12-14 22:14

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

haidemili 发表于 2022-12-14 22:29

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

tjmengzi 发表于 2022-12-14 23:18

感谢分享 不错

h512h 发表于 2022-12-15 07:43

…谢谢楼主分享

莲绮梦 发表于 2022-12-15 09:25

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

huaxincanmeng 发表于 2022-12-17 09:06

感谢分享,赞一个

落花萧然 发表于 2022-12-23 13:49

谢谢分享 不错 收藏了

Dreamfly0416 发表于 2022-12-23 14:43

谢谢分享
页: [1]
查看完整版本: 批量替换文件名中的广告词和删除指定后缀文件