Python - Convertir de UTF8 a CP1252

   
Vista:

Convertir de UTF8 a CP1252

Publicado por Enrique (1 intervención) el 29/07/2016 17:11:41
Hola a todos, desde hace poco he empezado a programar con python y he tenido mis avances. Ahora he estado haciendo un programa que convierta un archivo de texto en UTF8 a CP1252 ya que el programa que usará ese archivo de texto sólo admite ese formato

El código que tengo funciona con un simple archivo de prueba que hice pero con una muestra real del archivo obtengo UTF8 y no CP1252. Además el archivo real es un txt que pesa más de 1GB, me conviene no abrirlo todo en memoria sino que es mejor línea por línea.

Creo necesario aclarar que uso Windows ya que estoy obligado a ello .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"""Programa que convierte de formato UTF8 a CP1252"""
#!/Python27/ python
# -*- coding: utf-8 -*-
# Este código lee un archivo con juego de caracteres UTF-8 y lo convierte a CP1252
import time
import sys
reload(sys)
sys.setdefaultencoding("latin-1")
ruta = "D:/Volumen/prueba_pequeño/UTF8ANSI/" #folder donde se encuentran los ficheros
archivoCP1252 = open(ruta + 'convertido.txt', 'w') #nombre del archivo generado
archivoCP1252.close()
archivoCP1252 = open(ruta + 'convertido.txt', 'a')
with open(ruta + 'archivo_UTF8.txt') as f: #Se define el archivo a abrir, tiene la misma ruta
    for line in f:
        try:
            lineaCP1252 = line.decode('utf-8')
            archivoCP1252.write(lineaCP1252)
        except UnicodeDecodeError: #se captura el error
            archivoCP1252.close()
            print "Error: programa cerrado"
            sys.exit()
archivoCP1252.close()
El archivo de prueba que tengo tiene este contenido:
Este es un mensaje con codificación UTF8
Esta es la línea número 1
Esta es la línea número 2
Esta es la línea número 3
Esta es la línea número 4
y estas son las tildes áéíóú


Y la muestra del archivo que tengo tiene sólo estas dos lineas:

OBJECTID|FILE_NAME|SHEET_NAME|VARIABLE|ROUTE|START|END|VALUE|OBSERVATION|START_MEAS|START_X|START_Y|START_Z|END_MEASURE|END_X|END_Y|END_Z|TYPE_GEOM|START_X|START_Y|START_Z|END_X|END_Y|END_Z|ID
6600|EC_V0_12_2015|Survey_Results|CPSurvey_Results|FFFFEEEEDDDDCCCCBBBBAAAA99998888|14881.650000000|14897.650000000|100% Potentials within protection criteria||104874.000000000|967423.753900000|1025595.38000000|2612.900288660|104890.000000000|967439.750100000|1025594.78980000|2613.162988660|LINEA|967423.753900000|1025595.38000000|2612.900288660|967439.750100000|1025594.78980000|2613.162988660|6721.000000000


No entiendo por qué no me funciona si aparentemente todo está bien. No se qué pueda estar mal.

Ayuda por favor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder