[Python-es] Escritura en archivos binarios

Chema Cortes pych3m4 en gmail.com
Mie Ene 27 11:35:45 EST 2016


El mié., 27 ene. 2016 a las 17:28, Chema Cortes (<pych3m4 en gmail.com>)
escribió:

> El mié., 27 ene. 2016 a las 16:29, Pixu Kideak (<pixukideak en gmail.com>)
> escribió:
>
>> Estoy con la versión Python 3.5.0
>>
>
> with open(ficheroLeer, 'r+b') as f:
>     f.seek(1)
>     f.write(bytes([21])
>
> Según lo que sea, también podrías usar "literarles":
>
> with open(ficheroLeer, 'r+b') as f:
>     f.seek(1)
>     f.write(b'\x15')
>

Creo que he tomado mal los valores hexadecimales de la pregunta original.
Para escribir un '!' en un fichero binario se usaría directamente b'!'

with open(ficheroLeer, 'r+b') as f:
    f.seek(1)
    f.write(b'!')



>
>
>
>
>>
>>
>> 2016-01-27 16:21 GMT+01:00 Chema Cortes <pych3m4 en gmail.com>:
>>
>>>
>>>
>>> El mié., 27 ene. 2016 16:12, Pixu Kideak <pixukideak en gmail.com>
>>> escribió:
>>>
>>>> "
>>>> yo intentaría leer el fichero en memoria, cambiaría alli los datos y
>>>> luego volvería a escribir el fichero. Los discos no pueden escribir "un
>>>> byte".
>>>>
>>>> "
>>>> Cuando se esta realizando la asignación archivo = open(ficheroLeer,
>>>> 'r+b') ¿no se estaría trabajando contra el objeto "archivo" qué está en
>>>> memoria?
>>>> O por el contrario, ¿te refieres a volcar todo el contenido del fichero
>>>> en una lista y trabajar contra ésta; una vez finalizado volcar de nuevo el
>>>> contenido de la lista al fichero?
>>>>
>>>
>>> No hace falta bajar tanto de nivel. Lo más seguro es que Python
>>> sobrescriba el fichero completo en disco, pero eso no debe preocuparte.
>>>
>>> Lo que si es importante es saber si usas python3. Los ficheros binarios
>>> usan el tipo bytes y, por lo que dices, no lo estas usando.
>>>
>>>
>>>> Un saludo y gracias,
>>>>
>>>> 2016-01-27 16:00 GMT+01:00 Juan Ignacio <euribates en gmail.com>:
>>>>
>>>>> yo intentaría leer el fichero en memoria, cambiaría alli los datos y
>>>>> luego volvería a escribir el fichero. Los discos no pueden escribir "un
>>>>> byte".
>>>>>
>>>>> 2016-01-27 14:40 GMT+00:00 Pixu Kideak <pixukideak en gmail.com>:
>>>>>
>>>>>> Buenos días,
>>>>>>
>>>>>> Estoy trabajando con ficheros binarios pero tengo una duda.
>>>>>>
>>>>>> Lo primero que hago en mi programa es buscar un valor en el fichero,
>>>>>> a partir de esa posición  muevo el puntero X posiciones y me interesaria
>>>>>> escribir cierto valor binario y/o HEX en esa posición.
>>>>>>
>>>>>> He intentado con:
>>>>>>
>>>>>> ficheroLeer = '/ruta/mi/fichero.bin'
>>>>>> archivo = open(ficheroLeer,'r+b')
>>>>>> ...
>>>>>> archivo.seek(1) #Esta es la posición en la que me interesa modificar
>>>>>> el contenido.
>>>>>> archivo.write(21) #Digamos que quiero escribir ! - que HEX es 21 - en
>>>>>> esa dirección.
>>>>>>
>>>>>> Pero no consigo escribirlo puesto que parece que write recibe sólo
>>>>>> variables de tipo str.
>>>>>>
>>>>>> ¿Cómo podría escribir HEX21 en el fichero?
>>>>>>
>>>>>> Un saludo y gracias por vuestra ayuda ;-)
>>>>>>
>>>>>> _______________________________________________
>>>>>> Python-es mailing list
>>>>>> Python-es en python.org
>>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Juan Ignacio Rodríguez de León
>>>>> Móvil: 605 890514
>>>>> E-Mail: euribates en gmail.com
>>>>> http://www.elornitorrincoenma
>>>>> <http://www.elornitorrincoenmascarado.com/>scarado.com/
>>>>> <http://www.elornitorrincoenmascarado.com/>
>>>>> http://descon2.com/
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>> --
>>> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
>>> http://ch3m4.org/blog
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
> --
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
>
-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20160127/bdfdcd20/attachment.html>


Más información sobre la lista de distribución Python-es