convertir nombres de archivo de latin1 a utf8

Alvaro Herrera alvherre en alvh.no-ip.org
Mie Mar 21 15:38:55 CLT 2007


Germán Poó Caamaño escribió:
> On Wed, 2007-03-21 at 10:43 -0400, Alvaro Herrera wrote:
> > [...] 
> > Hmm.  Gracias Germán.  Esta solución programática me sirvió bastante,
> > sobre todo para darme cuenta por qué el convmv no me había servido.
> > Después de jugar un rato me di cuenta que el problema no es realmente
> > convertir Latin-1 en UTF8, sino que convertir desde "algun charset" a
> > UTF8, donde el charset en realidad debe ser determinado por
> > experimentación.  Algunos archivos tienen nombres en Latin-1, otros en
> > Win-1252, y otros en IBM cp850.  Así que es una ensalada que debo
> > adivinar, cada archivo por separado :-(  (Lo malo es que sin saber
> > alemán es más difícil darse cuenta si la transliteración tiene sentido o
> > no ... pero creo que en la mayoría de los casos la inspección simple es
> > suficiente)
> 
> ¿Y cómo te funcionaba antes?

Bueno, supongo que siempre hubo algunos archivos pifiados y no me había
dado cuenta :-)


> > Germán, una pregunta, ¿cómo hago para que os.walk no recorra los
> > subdirectorios recursivamente?
> 
> Si no quieres ningún directorio recursivo, creo que es más 
> conveniente usar os.listdir.  Con os.walk se pueden saltar 
> directorios, por la vía de removerlos de 'dirs', el cual se
> procesa en cada iteración.

Ok.  Estoy pensando en probar un algoritmo mas o menos asi:

0. codificaciones = ('latin1', 'cp1252', 'cp850')
1. para todos los archivos del directorio actual (no recursivo), mostrar
como se verian todos ellos probando con cada codificacion
2. preguntarle al usuario si acepta
3. si no acepta, ir a la siguiente codificacion
4. si no acepta y las codificaciones se acaban, probar archivo por
archivo

Voy a echarle un vistazo como podria hacerlo; creo que os.listdir y
isfile() son justo lo que necesito.

Nuevamente muchas gracias por la ayuda.

-- 
Alvaro Herrera                         http://www.flickr.com/photos/alvherre/
"PHP is what I call the "Dumb Monkey" language. [A]ny dumb monkey can code
something in PHP. Python takes actual thought to produce something useful."
                                                               (J. Drake)


Más información sobre la lista de distribución Linux