Python重命名文件夹下的文件(包含子文件夹下的文件)
这两天闲着无聊,看到福建疫情,然后想着停课的孩子们在家可能也会很无聊,可能就在家天天手机。所以想着爬些小孩子感兴趣的故事来玩儿。爬了一千多吧。部分截图如下:
这是从网站爬下来的初始格式,没有去更改,对于有强迫症的我来说,文件名加后缀格式就可以了,文件名里有字符串 mp3是咋回事嘛。所以想着批量处理下。以下是处理代码:
import os import sys dPath = 'X:\故事\世界著名童话' # 存储要修改文件名的文件夹 files = os.listdir(dPath) # 先遍历 n = 0 # 设置初始值 for i in files: # 遍历文件 oldfilename = dPath +'\\' + files[n] # 获取旧的文件路径和名称 # print(oldfilename) # 打印看是否符合预期 if ' mp3' in oldfilename: # 我们加个判定条件吧 newfilename = dPath + '\\' + i.replace(' mp3', '') # 要改成的路径和文件名 print(newfilename) # 打印看是否符合预期 os.rename(oldfilename, newfilename) # 开始重命名 print("已经将文件====>" + i + "更名为:" + newfilename) # 提示结果 else: print('文件===> 【' + i + '】 无需整理!') # 如果条件里没有,我们就不整理了 n += 1
代码运行完才发现是处理了另一个子文件夹,没有处理到故事根文件夹下的所有子文件夹。效果如下:
还得去写个处理二级文件夹下的批量改名还有处理批量解压的代码。
============================补充,将一个名为儿童故事的子目录所有文件进行重命名======================================
最初始的文件夹结构是下面这样的
然后子目录下的文件是下面这样的:
# 补充之前的代码,只做了一个子文件夹,这不刚跑步回来,想了个简单的方法。贴代码。
import os import sys def reName(dPath): # 读取该文件夹下的所有文件(包括文件夹) files = os.listdir(dPath) n = 0 # 初始化计值 # 开始遍历文件 for i in files: # 原来文件的路径和名称 oldfilename = dPath + '\\' + files[n] print(oldfilename) # 如果是文件夹就递归调用函数 if os.path.isdir(oldfilename): reName(oldfilename) # 如果不是文件夹,我们就这样处理 if ' mp3' in oldfilename: newfilename = dPath + '\\' + i.replace(' mp3', '') # 我们将原来的文件名去掉mp3 print(newfilename) # 打印看是否符合预期 # 符合预期就就地重命名文件 os.rename(oldfilename, newfilename) print('已经将文件名为====>【 ' + i + ' 】更改为:===>' + newfilename) else: print('文件名为========>【' + i + '】无需整理!' ) n += 1 filePath = 'X:\故事' reName(filePath) #调用函数进行处理
一运行呢,就把指定的filePath下的所有文件都重命名了。这里只是多做了个判定,判定如果是文件夹,就递归调用函数进行处理文件夹下的文件。