Rob*_*ley 6 python directory rename
我想通过将最后一个字符更改为小写(如果它是一个字母)来重复重命名目录
我在以前的帖子的帮助下完成了这个(抱歉双重发布而不是确认答案)
此代码适用于文件,但我如何适应目录呢?
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"
Run Code Online (Sandbox Code Playgroud)
问题是os.walk的默认值是topdown.如果您尝试在遍历topdown时重命名目录,则结果是不可预测的.
尝试设置os.walk
自下而上:
for root, subFolders, files in os.walk(rootdir,topdown=False):
Run Code Online (Sandbox Code Playgroud)
编辑
你遇到的另一个问题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
Run Code Online (Sandbox Code Playgroud)