Используйте 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
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.rename).
Из вашего вопроса неясно, какой шаблон вы хотите переименовать. В манипуляциях со строками нет ничего плохого. Здесь вам может понадобиться регулярное выражение.
Попробуйте это:
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)
Я предполагаю, что вы не хотите удалять расширение файла, но вы можете просто сделать то же самое с периодами.
Предполагая, что вы уже находитесь в каталоге, и что "первые 8 символов" из вашего комментария всегда верны. (Хотя "CHEESE_" состоит из 7 символов... ? Если это так, измените 8 ниже на 7)
from glob import glob
from os import rename
for fname in glob('*.prj'):
rename(fname, fname[8:])