蟒蛇。重命名子目录中的文件

时间:2015-01-14 09:14:40

标签: python rename os.walk

你能否帮我修改下面的脚本来改变子目录中文件的名称。

def change():
    path = e.get()
    for filename in os.walk(path):
        for ele in filename:
            if type(ele) == type([]) and len(ele)!=0:
                for every_file in ele:

                    if every_file[0:6].isdigit():
                        number = every_file[0:6]
                        name = every_file[6:]
                        x = int(number)+y
                        newname = (str(x) + name)
                        os.rename(os.path.join(path, every_file), os.path.join(path, newname))

1 个答案:

答案 0 :(得分:2)

我不知道您对文件名有什么限制,因此我写了一个通用脚本,只是为了向您展示如何在给定文件夹和所有子文件夹中更改其名称。

测试文件夹具有以下树结构:

~/test$ tree
.
├── bye.txt
├── hello.txt
├── subtest
│   ├── hey.txt
│   ├── lol.txt
│   └── subsubtest
│       └── good.txt
└── subtest2
    └── bad.txt

3 directories, 6 files

正如您所看到的,所有文件都有.txt扩展名。

重命名所有这些脚本的脚本如下:

import os


def main():
    path = "/path/toyour/folder"
    count = 1

    for root, dirs, files in os.walk(path):
        for i in files:
            os.rename(os.path.join(root, i), os.path.join(root, "changed" + str(count) + ".txt"))
            count += 1


if __name__ == '__main__':
    main()

count变量仅对每个文件使用不同的名称有用;可能你可以摆脱它。

执行脚本后,文件夹如下所示:

~/test$ tree
.
├── changed1.txt
├── changed2.txt
├── subtest
│   ├── changed4.txt
│   ├── changed5.txt
│   └── subsubtest
│       └── changed6.txt
└── subtest2
    └── changed3.txt

3 directories, 6 files

我认为您的代码中存在的问题是您没有使用root函数的实际os.walk

希望这有帮助。