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