在Python中批量重命名目录下的文件

417 投票
15 回答
640770 浏览
提问于 2025-04-15 22:17

我想用Python来重命名一些文件。

比如我有一个文件叫做 CHEESE_CHEESE_TYPE.***,我想把 CHEESE_ 去掉,这样我最终的文件名就变成 CHEESE_TYPE

我试着用 os.path.split,但是效果不太好。我也考虑过用字符串处理的方法,但也没有成功。

15 个回答

25

下面的代码应该可以正常工作。它会检查当前文件夹里的每一个文件名,如果文件名中包含 CHEESE_CHEESE_ 这个模式,那么就会对这个文件进行重命名。如果没有包含这个模式,就不会对文件名做任何改变。

import os
for fileName in os.listdir("."):
    os.rename(fileName, fileName.replace("CHEESE_CHEESE_", "CHEESE_"))
39

这是一个根据你最新评论写的脚本。

#!/usr/bin/env python
from os import rename, listdir

badprefix = "cheese_"
fnames = listdir('.')

for fname in fnames:
    if fname.startswith(badprefix*2):
        rename(fname, fname.replace(badprefix, '', 1))
653

使用 os.rename(src, dst) 可以用来重命名或者移动一个文件或文件夹。

$ ls
cheese_cheese_type.bar  cheese_cheese_type.foo
$ python
>>> import os
>>> for filename in os.listdir("."):
...  if filename.startswith("cheese_"):
...    os.rename(filename, filename[7:])
... 
>>> 
$ ls
cheese_type.bar  cheese_type.foo

撰写回答