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

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

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


当前回答

这类东西非常适合IPython,它具有shell集成。

In [1] files = !ls
In [2] for f in files:
           newname = process_filename(f)
           mv $f $newname

注意:要将它存储在脚本中,请使用.ipy扩展名,并在所有shell命令前加上!

参见:http://ipython.org/ipython-doc/stable/interactive/shell.html

其他回答

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

你可以使用os。系统函数的简单性和调用bash来完成任务:

import os
os.system('mv old_filename new_filename')

假设您已经在目录中,并且注释中的“前8个字符”始终为真。(虽然“CHEESE_”是7个字符…? 如果是,将下面的8改为7)

from glob import glob
from os import rename
for fname in glob('*.prj'):
    rename(fname, fname[8:])

您的问题似乎更多地在于确定新文件名,而不是重命名本身(您可以使用os. exe来重命名)。重命名方法)。

从你的问题中不清楚你想要重命名的模式是什么。字符串操作没有错。正则表达式可能是这里需要的。