Soy un principiante completo para Python o cualquier lenguaje de programación serio para el caso. Finalmente conseguí un código de prototipo para trabajar, pero creo que será demasiado lento.Optimización para encontrar y reemplazar archivos grandes en Python
Mi objetivo es encontrar y reemplazar algunos caracteres chinos en todos los archivos (son csv) en un directorio con números enteros según un archivo csv que tengo. Los archivos están bien numerados por año-mes, por ejemplo 2000-01.csv, y serán los únicos archivos en ese directorio.
Voy a estar recorriendo alrededor de 25 archivos que están en el vecindario de 500mb cada uno (y alrededor de un millón de líneas). El diccionario que utilizaré tendrá unos 300 elementos y cambiaré unicode (carácter chino) a enteros. Intenté con una ejecución de prueba y, asumiendo que todo se amplía linealmente (?), Parece que tomará aproximadamente una semana para que se ejecute.
Gracias de antemano. Aquí está mi código (no se rían!):
# -*- coding: utf-8 -*-
import os, codecs
dir = "C:/Users/Roy/Desktop/test/"
Dict = {'hello' : 'good', 'world' : 'bad'}
for dirs, subdirs, files in os.walk(dir):
for file in files:
inFile = codecs.open(dir + file, "r", "utf-8")
inFileStr = inFile.read()
inFile.close()
inFile = codecs.open(dir + file, "w", "utf-8")
for key in Dict:
inFileStr = inFileStr.replace(key, Dict[key])
inFile.write(inFileStr)
inFile.close()
Es la convención de Python nombrar las variables de instancia con letras minúsculas. También reemplazaría la palabra 'Dict' con algo diferente al tipo, para evitar confusiones futuras. –
¿Sus claves de diccionario consisten en exactamente 1 carácter chino cada una, o hay varios caracteres por clave? ¿Por qué quieres reemplazar los caracteres chinos con números enteros? –
@John: Tengo otros 35 archivos que tienen esta información ya codificada con enteros, y haré mi análisis en Stata, que no lee unicode. Necesito leer varios caracteres a la vez, no solo 1. – rallen