Pular para o conteúdo

Nomes de arquivos e codificação

Dica publicada em Python / Miscelânea
Rodolfo azzarado
Hits: 8.828 Categoria: Python Subcategoria: Miscelânea
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

SVN + rules + Debian = criando pacote deb

TradutorOOoNote - plugin para OpenOffice.org que traduz textos para qualquer língua

Python com Ninja-IDE no Fedora

Reproduzindo vídeos em modo texto no Linux

Carteira de Bitcoin Electrum no Linux

Crie o seu jogo roguelike em Python

#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

Entre na sua conta para comentar.