Nomes de arquivos e codificação

Publicado por Rodolfo em 10/10/2007

[ Hits: 8.174 ]

 


Nomes de arquivos e codificação



Copiando arquivos do Windows para o Linux tive problemas. Dessa forma, o Exaile (http://www.exaile.org/) não conseguia importar alguns arquivos MP3. O problema acontecia porque o nome dos arquivos estavam em ISO8859-1.

A solução foi executar alguns comandos em python:

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

O "os.listdir('.')" lista dodos os arquivos do diretório atual. O "os.rename" renomeia o arquivo, decodificando o nome.

Lembrando que isso renomeia todos os arquivos, não apenas os com nome em ISO8859-1, portanto, cuidado.

Outras dicas deste autor

SVN + rules + Debian = criando pacote deb

Leitura recomendada

TP-1 Engine - motor para criação de jogos

Como alterar a versão default (padrão) do Python no Linux

Python: Somando valores em um dicionário de strings

Hardware Project Simulator 0.23 - Mais fácil ainda!

Spyder - Excelente IDE para desenvolver em Python

  

Comentários
[1] Comentário enviado por zereis em 10/10/2007 - 11:52h

Boa pedida. Sempre tive problemas com codificação.
Mas aqui não deu certo. Saiu o seguinte erro:

>>> import os
>>> for i in os.listdir('.'):
... os.rename(i, i.decode('iso8859-1'))
File "<stdin>", line 2
os.rename(i, i.decode('iso8859-1'))
^
IndentationError: expected an indented block

[2] Comentário enviado por azzarado em 10/10/2007 - 11:58h

No Python, o delimitador de bloco, no caso o laço FOR, é controlado pela identação.

Vc deve identar a linha "os.rename(i, i.decode('iso8859-1'))". Pode ser com espaços em branco ou com Tab (na dica não aparece muito bem, mas tem 2 espaços depois dos "...").

Resolve o problema?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts