python修改某个文件夹内文件名称

有个文件夹里的所有后缀为. txt的文件需要修改名称,但保留. txt后缀名 修改名称参考rename.csv中的映射关系,第一列是原来文件的名称,第二列是文件现在的名字,要求将文件夹内的文件名称都改为第二列的名称

题主你好,回答结构为:参考代码,参考CSV映射,参考的效果图

import os
import pandas as pd

csv_file = 'D:/pythonProject/request.csv'  # csv文件路径
df = pd.read_csv(csv_file, encoding = 'gbk')  # 看情况在utf-8和gbk做选择
df['add'] = df['old'].map(str)+'/'+df['new'].map(str)  # 在csv中临时创造新列add作为准备工作,分割符为/
goal = [i.split('/') for i in list(set(df['add']))]  # 将add列转换为大列表镶嵌子列表的结构

directory = 'D:/pythonProject/'  # 你的文件夹路径
files = os.listdir(directory)  # 获得文件夹内的所有文件名
for file in files:
    if file.endswith('.txt'):  # 选择以txt文件
        for index in range(0, len(goal)):
            if file.strip('.txt') in goal[index][0]:  # 判断文件名是否在csv的old列,也可以是if file.strip('.txt') == goal[index][0]
                os.rename(file, goal[index][1]+'.txt')  # 如果是,则替换为对应new列
                goal.remove(goal[index])

img

img

img

你题目的解答代码如下:

import os
import pandas as pd

df = pd.read_csv(r'rename.csv', encoding='gbk')  #或编码改成utf-8
path=r"E:\xxx" # 要改名文件所在的文件夹
for idx, row in df.iterrows():
    file_path = os.path.join(path,str(row['A列'])+".txt")
    file_path2 = os.path.join(path,str(row['B列'])+".txt")
    if os.path.isfile(file_path):
        os.rename(file_path, file_path2)
        print(file_path,"改名为",file_path2)

img


改名前

img

改名后

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img