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下的所有文件都重命名了。這里只是多做了個判定,判定如果是文件夾,就遞歸調用函數進行處理文件夾下的文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM