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下的所有文件都重命名了。这里只是多做了个判定,判定如果是文件夹,就递归调用函数进行处理文件夹下的文件。

原文地址:https://www.cnblogs.com/mafu/p/15312080.html