[AYUDA][PYTHON] Como leo y escribo archivos en forma binaria

Iniciado por Noxware, 22 Junio 2014, 00:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Noxware

Hola, necesito saber como leo X archivo de forma binaria, de tal forma que pueda guardar su codigo binario en un archivo de texto y viceversa.

al principio use "rb" y "wb" para leer y escribir de forma binaria pero me mostraba tanto letras como numeros y yo necesito solo numeros.

un amigo me dijo que hay un metodo que muestra el archivo con numeros decimales o algo asi, mi pregunta ¿es como lo hago?
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

engel lex

no se python pero esto es un problema común en los lenguajes :P

lo que pasa es que probablemente está en binario, pero lo estás representando como ascii, es decir, lo mismo que abrir un .exe o una imagen en notepad

es decir, no puedes esperar guardar bits en un archivo y abrirlo como texto, porque los editores de texto, leerán los bits a conveniencia de manera que coincidan con los bits representados por ascii... tendrás que buscar una forma de lee el archivo byte a byte y convertirlo en texto... ya sean ceros y unos, octal, hexadecimal, decimal... etc... pero debe ser convertido... no leído y pegado
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

te diré que primero aprendas sobre archivos, segundo sobre binario y texto, y tercero para ver "solo números" ¿qué tipo es eso? ¿sabés en que lo querés ver? lo es lo mismo notepad que un editor hexa por ejemplo, binario es solo 0 y 1 ¿con qué ves así?

Noxware

justamente "rb" y "wb" lo que hacen es leer y escribir de forma binaria, para que suceda eso de leerlo como texto ubiese tenido que usar "r" y "w" asi que ese no debe ser el problema :P
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

MCKSys Argentina

Hola!

La parte que no te entiendo es la resaltada:

Cita de: francoyo1998 en 22 Junio 2014, 00:39 AM
Hola, necesito saber como leo X archivo de forma binaria, de tal forma que pueda guardar su codigo binario en un archivo de texto y viceversa.

al principio use "rb" y "wb" para leer y escribir de forma binaria pero me mostraba tanto letras como numeros y yo necesito solo numeros.

un amigo me dijo que hay un metodo que muestra el archivo con numeros decimales o algo asi, mi pregunta ¿es como lo hago?

Qué quieres decir con eso? Abriste el archivo con un editor hexa para ver bien qué es lo que contenía?

No entiendo bien qué es lo que quieres hacer...

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


engel lex

Cita de: francoyo1998 en 23 Junio 2014, 03:40 AM
justamente "rb" y "wb" lo que hacen es leer y escribir de forma binaria, para que suceda eso de leerlo como texto ubiese tenido que usar "r" y "w" asi que ese no debe ser el problema :P

no necesariamente XD eso quisiera decir que lo va a guardar como el numero que representa binariamente esa cantidad XD un numero gigantesco que no te terminaría de servir... también significaría que si abres un archivo de texto de manera binaria y lo guardas como texto, lo destruiría... no, básicamente ese comando indica si lo va a interpretar de una vez como texto o si no lo va a intepretar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

fallout20xx

Esto funciona en py2.7:

archivo = open("C:/texto.txt", 'r')
texto = archivo.read()
' '.join(format(x, 'b') for x in bytearray(texto))


un saludo
si disfrutas siempre que programas... significa que aun no has programado suficiente xD

Noxware

"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

daryo

prueba pasar el archivo a hexadecimal con el modulo binascii que viene por defecto en python luego lo metes al archivo asi no tendras caracteres raros es algo asi

no lo he probado asi que talves algo no este bien

Código (python) [Seleccionar]

import binascii

cadena="soy una cadena en un fichero binario"
codigo=binascii.hexlify(cadena)
print codigo
print binascii.unhexlify(codigo)
buenas