python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python重命名文件

Python按照映射关系批量重命名文件

作者:一晌小贪欢

这篇文章主要为大家详细介绍了Python如何按照映射关系批量重命名文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

1、背景介绍

有时候我们日常办公的时候,经常需要将批量文件,进行重命名,但是重命名是按照一定的规则,比如提供一个映射关系的表,如下图:

那么我们可以Python中的shutil模块对文件进行批量的操作,以此达到我们想要的效果

2、库的安装

用途安装
pandasExcel读取pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/
os获取路径内置库无需安装
json读写json文件内置库无需安装

3、核心代码

①:重命名并移动文件

def rename_and_move_files(self):
    if not self.source_folder or not self.rules_folder:
        self.log_text.append('请确保已选择源文件夹和规则文件夹!')
        return

    try:
        excel_file = os.listdir(self.rules_folder)[0]
        df = pd.read_excel(os.path.join(self.rules_folder, excel_file))

        for index, row in df.iterrows():
            old_name = row['源文件名']
            new_name = row['新文件名']

            old_file_path = os.path.join(self.source_folder, old_name)

            if os.path.isfile(old_file_path):
                new_file_path = os.path.join(self.target_folder, new_name)
                shutil.move(old_file_path, new_file_path)
                self.log_text.append(f"文件 '{old_name}' 已重命名为 '{new_name}' 并移动至文件夹【修改后】。")
            else:
                self.log_text.append(f"文件 '{old_name}' 未找到,保留在文件夹【数据源】。")
        self.log_text.append("文件重命名和移动操作完成!")
    except Exception as e:
        self.log_text.append(f"出现错误: {e}")

4、完整代码

# -*- coding: UTF-8 -*-

import os
import pandas as pd
import shutil

def select_folder(prompt):
    folder = prompt
    if not os.path.isdir(folder):
        print(f"文件夹路径 '{folder}' 无效,请重新输入。")
        return select_folder(prompt)
    return folder

def rename_and_move_files(source_folder, rules_folder, target_folder):
    if not os.path.exists(target_folder):
        os.makedirs(target_folder)

    try:
        # 读取Excel文件(假设只有一个Excel文件)
        excel_file = os.listdir(rules_folder)[0]
        df = pd.read_excel(os.path.join(rules_folder, excel_file))

        # 遍历Excel的每一行
        for index, row in df.iterrows():
            old_name = row['源文件名']
            new_name = row['新文件名']

            # 构建源文件的完整路径
            old_file_path = os.path.join(source_folder, old_name)

            if os.path.isfile(old_file_path):
                # 构建新的文件路径
                new_file_path = os.path.join(target_folder, new_name)

                # 移动并重命名文件
                # shutil.move(old_file_path, new_file_path)
                # 复制并重命名文件
                shutil.copy(old_file_path, new_file_path)
                print(f"文件 '{old_name}' 已重命名为 '{new_name}' 并移动至文件夹【{target_folder}】。")
            else:
                print(f"文件 '{old_name}' 未找到,保留在文件夹【{source_folder}】。")
        print("文件重命名和移动操作完成!")
    except Exception as e:
        print(f"出现错误: {e}")

def main():
    source_folder = select_folder('待命名数据源')
    rules_folder = select_folder('命名规则')
    target_folder = '修改后'

    rename_and_move_files(source_folder, rules_folder, target_folder)

if __name__ == '__main__':
    main()

到此这篇关于Python按照映射关系批量重命名文件的文章就介绍到这了,更多相关Python重命名文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文