quarta-feira, dezembro 12, 2007

Renomear arquivos

Surgiu a pouco a necessidade de renomear todas imagens de uma pasta, so adicionar um termo no início do nome. E nada como um script em Python pra facilitar sua vida:

import os

for nome in os.listdir('.'):
novo_nome = 'MEET_' + nome
os.rename(nome, novo_nome)
print 'OK'

10 comentários:

Arthur Furlan disse...

O mesmo em shell script...

$ for i in $(ls); do mv $i "MEET_$i"; done

Sergio disse...

Gosto pra caramba de shell script, mas a sua solução em python é extremamente legível e multiplataforma :)

Seu blog está devidamente cadastrado no meu google reader, assim vejo todas as suas dicas. Valeu!

Nome: Igor Sobreira disse...

É Arthur, realmente bem simples, legal ver soluções em outras linguagens. Fiz um minicurso de shell script uma vez, da pra fazer muita coisa no Linux.

Valeu voyeg3r, também acompanho o vivaotux, tem umas dicas legais.

Jader Rubini disse...

No Windows eu não consegui fazer funcionar.

Passei "D:/Fotos/teste/" como path do os.listdir, mas ele acusa erro é na linha os.rename(name, new_name).

O traceback:
WindowsError: [Error 2] O sistema não pode encontrar o arquivo especificado

Nome: Igor Sobreira disse...

Jader, não uso Windows, não sei se existe diferenças com relação ao módulo os. Mas como eu fiz aqui com o diretório atual ('.'), ele achava nome no diretorio atual.
Como você tá passando outro diretório, tenta renomear passando o caminho completo, como:
os.rename("C:/fotos/teste/"+nome, "C:/fotos/teste/"+novo_nome)

Jader Rubini disse...

Igor, funcionou. ;)
Isso pode ser realmente muito útil, principalmente pra casos mais complexos, onde temos que usar RegExp's.

Vou começar a brincar com isso agora mesmo. :P

Sergio disse...

Um dos problemas de renomear é a codificação, encontrei um artigo legal
aqui.
o código é muito simples como tudo em python:

$ python
>>> import os
>>> for i in os.listdir('.'):
... os.rename(i, i.decode('iso8859-1'))

Sergio disse...

Andei pesquisando um script que fizesse o mesmo de forma recursiva, ou seja, a pasta e todo o seu conteúdo, publiquei no meu wiki algo sobre o tema e gostaria que você desse uma olhada:

http://linuxdicas.wikispaces.com/iso2utf

Thiago disse...

Estou aprendendo Python, e essa dica sua foi uma tremenda mão na roda, não implementei seu código da mesma maneira, mas me ofereceu a ideia que eu tava precisando, usando o método do módulo OS do jeitinho que eu precisava. Obrigado!

Treze disse...

Obrigado!!

Apesar de ser uma dica antiga, me ajudou!!