用于重命名以空格或句点结尾的文件夹的递归脚本

时间:2014-03-04 14:56:06

标签: python recursion rename

我们刚刚将存储服务器切换到新的文件系统。旧文件系统允许用户在末尾命名带有句点或空格的文件夹。新系统认为这是一个非法的角色。如何编写python脚本以递归循环遍历所有目录并重命名并在末尾具有句点或空格的文件夹?

2 个答案:

答案 0 :(得分:2)

使用os.walk。给它一个根目录路径,它将递归迭代它。做点什么

for root, dirs, files in os.walk('root path'):
    for dir in dirs:
        if dir.endswith(' ') or dir.endswith('.'):
            os.rename(...)

修改

我们实际上应该首先重命名leaf目录 - 这是解决方法:

alldirs = []
for root, dirs, files in os.walk('root path'):
    for dir in dirs:
        alldirs.append(os.path.join(root, dir))

# the following two lines make sure that leaf directories are renamed first
alldirs.sort()
alldirs.reverse()

for dir in alldirs:
    if ...:
        os.rename(...)

答案 1 :(得分:0)

您可以使用os.listdir列出某些路径上的文件夹和文件。这将返回您可以迭代的列表。对于每个列表条目,使用os.path.join将文件/文件夹名称与父路径组合,然后使用os.path.isdir检查它是否是文件夹。如果是文件夹,则检查最后一个字符的有效性,如果无效,则使用os.rename更改文件夹名称。更正文件夹名称后,您可以使用该文件夹的完整路径作为基本路径重复整个过程。我会把整个过程放到一个递归函数中。