如何在python中递归循环文件结构和重命名目录
我想通过将最后一个字符改为小写(如果是字母)来重新命名目录 我是在我以前的帖子的帮助下做到这一点的(很抱歉,我重复了帖子,没有确认答案) 这段代码适用于文件,但我如何将其也适用于目录如何在python中递归循环文件结构和重命名目录,python,rename,directory,Python,Rename,Directory,我想通过将最后一个字符改为小写(如果是字母)来重新命名目录 我是在我以前的帖子的帮助下做到这一点的(很抱歉,我重复了帖子,没有确认答案) 这段代码适用于文件,但我如何将其也适用于目录 import fnmatch import os def listFiles(dir): rootdir = dir for root, subFolders, files in os.walk(rootdir): for file in files: y
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"
问题是的默认设置是自上而下。如果在自上而下遍历时尝试重命名目录,则结果是不可预测的 尝试设置
os.walk
自下而上:
for root, subFolders, files in os.walk(rootdir,topdown=False):
def listDirs(dir):
for root, subFolders, files in os.walk(dir, topdown=False):
for folder in subFolders:
yield os.path.join(root,folder)
return
编辑
另一个问题是listFiles()
返回的是文件而不是目录
此(未测试)子项从下至上返回目录:
for root, subFolders, files in os.walk(rootdir,topdown=False):
def listDirs(dir):
for root, subFolders, files in os.walk(dir, topdown=False):
for folder in subFolders:
yield os.path.join(root,folder)
return
请尽量避免在帖子中添加无关的注释和签名。您可能遇到的一个问题是,在遍历树时重命名目录可能会导致遍历失败(因为您可能尝试遍历已重命名的目录)。因此,您可能需要做的是列出所有需要重命名的目录,并在遍历之后使用单独的循环来重命名这些目录。谢谢您的提示。我不知道如何更改代码,只重命名目录而不重命名文件。我已经用ListDir替换了ListFile,但这不起作用。干杯,RobUse
子文件夹
而不是文件
<代码>文件是文件列表,子文件夹
是子目录列表。