Tenemos una persona que ingresa datos codificados en UTF-16 en Windows y quisieran tener utf-8 y eliminar la lista de materiales. La conversión de utf-8 funciona pero la BOM todavía está allí. ¿Cómo eliminaría esto? Esto es lo que tengo actualmente:convirtiendo utf-16 -> utf-8 Y eliminando BOM
batch_3={'src':'/Users/jt/src','dest':'/Users/jt/dest/'}
batches=[batch_3]
for b in batches:
s_files=os.listdir(b['src'])
for file_name in s_files:
ff_name = os.path.join(b['src'], file_name)
if (os.path.isfile(ff_name) and ff_name.endswith('.json')):
print ff_name
target_file_name=os.path.join(b['dest'], file_name)
BLOCKSIZE = 1048576
with codecs.open(ff_name, "r", "utf-16-le") as source_file:
with codecs.open(target_file_name, "w+", "utf-8") as target_file:
while True:
contents = source_file.read(BLOCKSIZE)
if not contents:
break
target_file.write(contents)
Si Hexdump -C veo:
Wed Jan 11$ hexdump -C svy-m-317.json
00000000 ef bb bf 7b 0d 0a 20 20 20 20 22 6e 61 6d 65 22 |...{.. "name"|
00000010 3a 22 53 61 76 6f 72 79 20 4d 61 6c 69 62 75 2d |:"Savory Malibu-|
en el archivo resultante. ¿Cómo elimino la lista de materiales?
THX
fresco - funciona bien, ¿sabe cómo añadir un CRLF -> conversión de LF facilidad en la lectura? thx si puede ayudar – timpone
Ese enfoque (almacenar todo el archivo en la memoria dos veces) no es muy eficiente, si está trabajando con archivos de gran tamaño. –