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

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

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


当前回答

进口操作系统 进口的字符串 def rename_files ():

#List all files in the directory
file_list = os.listdir("/Users/tedfuller/Desktop/prank/")
print(file_list)

#Change current working directory and print out it's location
working_location = os.chdir("/Users/tedfuller/Desktop/prank/")
working_location = os.getcwd()
print(working_location)

#Rename all the files in that directory
for file_name in file_list:
    os.rename(file_name, file_name.translate(str.maketrans("","",string.digits)))

rename_files ()

其他回答

那么这个呢:

import re
p = re.compile(r'_')
p.split(filename, 1) #where filename is CHEESE_CHEESE_TYPE.***

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

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

这类东西非常适合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

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

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

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

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