我试图用Python重命名目录中的一些文件。

假设我有一个名为CHEESE_CHEESE_TYPE的文件。***,并希望删除CHEESE_,因此我的结果文件名将是CHEESE_TYPE

我正在尝试使用os.path.split,但它不能正常工作。我也考虑过使用字符串操作,但也没有成功。


当前回答

使用操作系统。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

其他回答

这对我很有用。

import os
for afile in os.listdir('.'):
    filename, file_extension = os.path.splitext(afile)
    if not file_extension == '.xyz':
        os.rename(afile, filename + '.abc')

这个命令将使用重命名器从当前目录下的所有文件中删除初始的"CHEESE_"字符串:

$ renamer --find "/^CHEESE_/" *

下面的代码应该可以工作。它接受当前目录中的每个文件名,如果文件名包含模式CHEESE_CHEESE_,那么它将被重命名。如果不是,则不对文件名进行任何操作。

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

使用操作系统。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

试试这个:

import os
import shutil

for file in os.listdir(dirpath):
    newfile = os.path.join(dirpath, file.split("_",1)[1])
    shutil.move(os.path.join(dirpath,file),newfile)

我假设您不想删除文件扩展名,但您可以对句号进行相同的分割。