如何应用Python递归重命名目录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (137)

我创建了一个脚本,用包含空格或特殊字符的名称递归地重命名目录:

import os
import re
import pdb

def renameInvalid(root):
    print("root is: " + root)
    for f in os.listdir(root):        
        if os.path.isdir(f):            
            old = f
            f = f.replace(" ", "_")
            f = re.sub(r'[^a-zA-Z0-9-_]', '',f)
            if old != f:
                print(root + " na substitutie")
                os.rename(old,f)
                print(root + " na hernoemen")
                print("renamed " + old + " to " + f )
                #pdb.set_trace() 
                f = '/' + f
                pad = root + f                
                renameInvalid(str(pad))

mountpunt = os.getcwd()
renameInvalid(mountpunt)

你可以通过创建两个包含空格的目录来测试此脚本。你将其中一个目录放置在另一个目录中,然后从第一个目录中运行脚本。脚本重命名第一个目录,但在isdir(F)上生成OSError。有人知道这里有什么问题吗?

提问于
用户回答回答于

我找到了答案 :

import os
import re

def renameInvalid(root):    
    for f in os.listdir(root):        
        old = f
        f = f.replace(" ", "_")
        f = re.sub(r'[^a-zA-Z0-9-_]', '',f)
        if old != f:                              
                os.rename(old,f)                
                print("renamed " + old + " to " + f )
        if os.path.isdir(f):
            os.chdir(f)
            renameInvalid(".")
            os.chdir("..")            

renameInvalid(".")

只有当知道自己在做什么时,它才应该运行这段代码,它用空格或文件名中的特殊字符重命名所有文件夹和文件。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励