Python中批量修改文件名,去除某些内容

本文介绍了如何在Python3.9环境下,利用PyCharm(2023.1.3)编写脚本,批量处理特定文件夹内imageonline.co文件名,移除冗余信息并进行格式化
部署运行你感兴趣的模型镜像

环境:Window10 + Python3.9 + PyCharm(2023.1.3)

-------------------------------------****************** ** *********************-----------------------------------------

这是在Python中批量将指定文件夹下相似的文件名,提取文件名有效信息,精简文件名,去除烦人信息。

-------------------------------------****************** ** *********************-----------------------------------------

开始时是这样

在这里插入图片描述

然后让他变成了这样

在这里插入图片描述

Python中批量修改文件名,去除某些内容

-------------------------------------****************** ** *********************-----------------------------------------

代码实现:

# --** coding="UTF-8" **--
# project:Small_Case
# author:SueMagic  time:2019-05-11
# latest time:2024-04-02
import os, time
import re
import sys

# 02-imageonline.co-61986-1
# origin1-imageonline.co-921510-4
RE_FILE_NAME_FORMAT = "[a-zA-Z0-9_]+-imageonline.co-(\d{5,7})-(.*)\.png"


pathString = """
D:\picture\imageonline.co-01
D:\picture\imageonline.co-02
D:\picture\imageonline.co-03
D:\picture\imageonline.co-04
D:\picture\imageonline.co-05
D:\picture\imageonline.co-06
D:\picture\imageonline.co-07
D:\picture\imageonline.co-08
"""


class BatchRename():
    def __init__(self, str):
        self.path = []
        pathList = str.split()
        for path in pathList:
            path = os.path.abspath(path)
            if (os.path.exists(path)):
                self.path.append(path)
        print({"self.path": self.path})

    """"
    修改后缀名
    """
    def change_suffix(self, path):  

    """
    修改文件名,叠加数字
    """
    def change_file_name(self, path):
       
    """
    获取当前路径下的文件目录
    """
    def getFileNames(self, path):
        return os.listdir(path)

    """
    某些部分删除,替换处
    """
    def renameOnefile(self, src_name, dst_name):
        os.rename(src_name, dst_name)

    """
    修改文件名,某些部分删除
    """
    def batchRename(self, path):
        fileNames = self.getFileNames(path)
        print("修改前:{}-{}".format(path, fileNames))
        rule = re.compile(RE_FILE_NAME_FORMAT)
        print("现在rule是" + str(rule))
        for fileName in fileNames:
            if fileName.endswith('.png'):
                subNames = rule.findall(fileName)
                if (len(subNames) > 0):
                    sn, name = subNames[0]
                    newFileName = "{}-{}.png".format(sn, name)
                    print("这里是" + str(newFileName))
                    srcName = os.path.join(os.path.abspath(path), fileName)
                    dstName = os.path.join(os.path.abspath(path), newFileName)
                    self.renameOnefile(srcName, dstName)
        print("修改后:{}-{}".format(path, self.getFileNames(path)))

    def runBatchProc(self):
        for path in self.path:
            self.batchRename(path)


if __name__ == '__main__':
    batch_name = BatchRename(pathString)
    batch_name.runBatchProc()
    # change_suffix()
    # change_file_name()

        

-------------------------------------****************** ** *********************-----------------------------------------

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用Python批量更改文件扩展名 为了实现批量修改文件后缀名的功能,可以利用Python中的`os`模块来操作文件系统。具体来说,通过遍历指定目录下的所有文件并逐一检查其后缀名来进行替换。 #### 方法一:基于 `os.listdir()` 和字符串处理 这种方法适用于简单的场景,即只需要改变特定目录内顶层文件的后缀而不涉及子目录的情况: ```python import os def change_extension_in_folder(folder_path, old_ext, new_ext): for filename in os.listdir(folder_path): # 获取目标文件夹内的所有文件名 if not filename.endswith(old_ext): # 如果不是我们要找的那种类型的文件就跳过 continue base = os.path.splitext(filename)[0] # 去掉旧的扩展名部分 new_name = f"{base}{new_ext}" # 添加新的扩展名 full_old_file = os.path.join(folder_path, filename) full_new_file = os.path.join(folder_path, new_name) try: os.rename(full_old_file, full_new_file) # 尝试重命名文件 print(f'Successfully renamed "{filename}" to "{new_name}".') except Exception as e: print(f'Failed to rename "{filename}": {str(e)}') change_extension_in_folder('your_directory', '.txt', '.md') # 修改 your_directory 路径以及所需转换前后缀 ``` 此方法仅限于同一层文件的操作,并且相对直观易懂[^1]。 #### 方法二:递归遍历整个目录结构(含子文件夹) 当需要更深入地访问包含多级嵌套子文件夹的大规模项目时,则应该考虑采用更为强大的工具如`os.walk()`. 这样不仅可以一次性完成大量文件的批量化更新,而且还能更好地控制程序逻辑: ```python import os def recursive_change_extensions(root_dir, old_ext, new_ext): for root, dirs, files in os.walk(root_dir): # 遍历根目录及其所有的子目录 for file in files: # 对每一个找到的文件做进一步判断 if file.lower().endswith(old_ext.lower()): # 不区分大小写比较后缀名 filepath = os.path.join(root, file) noext_filename = os.path.splitext(file)[0] target_filepath = os.path.join(root, f'{noext_filename}{new_ext}') try: os.replace(filepath, target_filepath) print(f'Renamed:\n{filepath}\nto\n{target_filepath}\n---') except OSError as err: print(f"Error renaming '{file}'\nDetails:{err}") recursive_change_extensions('/path/to/parent/folder/', '.jpg', '.jpeg') # 设置参数以适应实际需求 ``` 上述代码片段展示了如何使用`os.walk()`函数迭代地查找并改写给定路径下所有符合条件的文件名称[^3].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值