如何在python中递归循环文件结构并重命名目录

2024-05-15 21:07:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过将最后一个字符改为小写(如果是字母)来重新命名目录

我已经在我以前的帖子的帮助下完成了这项工作(很抱歉重复发布,并且没有确认答案)

这段代码适用于文件,但是我怎样才能使它也适用于目录呢?

import fnmatch
import os


def listFiles(dir):
    rootdir = dir
    for root, subFolders, files in os.walk(rootdir):
        for file in files:
            yield os.path.join(root,file)
    return


for f in listFiles(r"N:\Sonstiges\geoserver\IM_Topo\GIS\MAPTILEIMAGES_0\tiles_2"):
    if f[-5].isalpha():
        os.rename(f,f[:-5]+f[-5].lower() + ".JPG")
        print "Renamed " +  "---to---" + f[:-5]+f[-5].lower() + ".JPG"

Tags: inimport目录forosdirrootfiles
1条回答
网友
1楼 · 发布于 2024-05-15 21:07:27

问题是os.walk的默认值是自上而下的。如果在自上而下遍历时尝试重命名目录,则结果是不可预测的。

尝试将os.walk设置为自下而上:

for root, subFolders, files in os.walk(rootdir,topdown=False):

编辑

另一个问题是listFiles()返回的是文件而不是目录。

这个(未测试的)子返回自下而上的目录:

def listDirs(dir):
    for root, subFolders, files in os.walk(dir, topdown=False):
        for folder in subFolders:
           yield os.path.join(root,folder)
    return

相关问题 更多 >