Complementando...
Se quer todas as pastas cujos nomes comecem com determinada palavra ou letra, pode usar o módulo glob
para filtrá-los já na listagem (assim não precisa testá-los durante o loop). Mas vale lembrar que o seu código lista arquivos e pastas (faça o teste adicionando alguns arquivos pra vc ver). Se a ideia é renomear somente as pastas, deveria ser algo assim:
import os
from glob import glob
REMOVE_PALAVRA_OU_LETRA = 'PALAVRA_OU_LETRA'
for filename in glob(f'{REMOVE_PALAVRA_OU_LETRA}*'):
if os.path.isdir(filename): # renomeia somente se for uma pasta (se for arquivo, não)
os.rename(filename, filename[len(REMOVE_PALAVRA_OU_LETRA):])
Ou então você pode usar os.walk
. Esta função verifica todos os subdiretórios, mas no seu caso você só está pegando o primeiro nível da pasta (não está procurando por sub-pastas), então só precisaria pegar o primeiro:
import os
REMOVE_PALAVRA_OU_LETRA = 'PALAVRA_OU_LETRA'
for dirname in next(os.walk('.'))[1]: # pega as pastas no "primeiro nível" (não pega sub-pastas)
if dirname.startswith(REMOVE_PALAVRA_OU_LETRA):
os.rename(dirname, dirname[len(REMOVE_PALAVRA_OU_LETRA):])
Outra alternativa é usar o módulo pathlib
, a ideia é similar:
from pathlib import Path
REMOVE_PALAVRA_OU_LETRA = 'PALAVRA_OU_LETRA'
# arquivos e pastas que comecem com a palavra/letra
for file in Path('.').glob(f'{REMOVE_PALAVRA_OU_LETRA}*'):
if file.is_dir(): # se for pasta, renomeia
file.rename(file.name[len(REMOVE_PALAVRA_OU_LETRA):])