我试图用Python重命名目录中的一些文件。
假设我有一个名为CHEESE_CHEESE_TYPE的文件。***,并希望删除CHEESE_,因此我的结果文件名将是CHEESE_TYPE
我正在尝试使用os.path.split,但它不能正常工作。我也考虑过使用字符串操作,但也没有成功。
我试图用Python重命名目录中的一些文件。
假设我有一个名为CHEESE_CHEESE_TYPE的文件。***,并希望删除CHEESE_,因此我的结果文件名将是CHEESE_TYPE
我正在尝试使用os.path.split,但它不能正常工作。我也考虑过使用字符串操作,但也没有成功。
当前回答
那么这个呢:
import re
p = re.compile(r'_')
p.split(filename, 1) #where filename is CHEESE_CHEESE_TYPE.***
其他回答
这是一个基于你最新评论的脚本。
#!/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))
您的问题似乎更多地在于确定新文件名,而不是重命名本身(您可以使用os. exe来重命名)。重命名方法)。
从你的问题中不清楚你想要重命名的模式是什么。字符串操作没有错。正则表达式可能是这里需要的。
使用操作系统。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 re
p = re.compile(r'_')
p.split(filename, 1) #where filename is CHEESE_CHEESE_TYPE.***
试试这个:
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)
我假设您不想删除文件扩展名,但您可以对句号进行相同的分割。