elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  subprocess.Popen() en python 3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: subprocess.Popen() en python 3  (Leído 2,422 veces)
retr02332

Desconectado Desconectado

Mensajes: 89


Learn, Imagine and Create.


Ver Perfil
subprocess.Popen() en python 3
« en: 28 Noviembre 2019, 03:20 am »

Hola a todos, una pregunta.

En python 2.7 cuando hago un subprocess.Popen() y guarda en una variable la salida de stdout, esta se guarda en str. En cambio cuando hago lo mismo en python 3.7, esta salida ya no es en str, sino en bytes.

Mi pregunta es, ¿como puedo hacer para que la salida no sea en bytes, sino que sea en str?

Agradezco sus respuestas.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: subprocess.Popen() en python 3
« Respuesta #1 en: 28 Noviembre 2019, 03:56 am »

no hay forma directa, la cosa es que la captura de datos cambio entre python 2 y 3, ya que el 3 te da el acceso a los datos en bajo nivel y te obliga a hacer la transformacion a mano por si la codificacion no es ascii o utf8... en caso que quieras hacer la transformacion simple con .decode() a la cadena de bytes te lo va a transformar a texto


En línea

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.
retr02332

Desconectado Desconectado

Mensajes: 89


Learn, Imagine and Create.


Ver Perfil
Re: subprocess.Popen() en python 3
« Respuesta #2 en: 28 Noviembre 2019, 04:53 am »

En eso tienes toda la razon, efectivamente python trata de convertirme los bytes a str cuando llamo al metodo .decode().

El problema es en windows creo, porque en linux esto no me pasa.

El error que me bota el cmd cuando ejecuto el script es el siguiente:

UnicodeDecodeError: 'utf-8' codec can´t decode byte 0xa3 in position 52: invalid start byte
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: subprocess.Popen() en python 3
« Respuesta #3 en: 28 Noviembre 2019, 14:13 pm »

exacto por eso mismo es que pusieron la conversion a mano, porque si te pasa eso en python2 no tienes como resolver facilmente....

lo que pasa es que hay un caracter unicode que no corresponde a utf8...y no corresponde porque windows usa ISO-8859-1, entonces le dices que haga el decode con ese formato .decode('ISO-8859-1')
En línea

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Procesos en segundo plano con Popen
Scripting
Khaleth 0 5,758 Último mensaje 9 Marzo 2010, 10:25 am
por Khaleth
Introducir valores automáticamente con librería subprocess [Python]
Scripting
Lautrab 0 2,194 Último mensaje 13 Abril 2013, 14:07 pm
por Lautrab
Usar subprocess a través de socket Python
Scripting
Sentex 0 1,476 Último mensaje 8 Marzo 2018, 12:03 pm
por Sentex
[Python] Duda con el modulo subprocess..
Scripting
Avispon99 6 3,454 Último mensaje 2 Junio 2018, 20:38 pm
por Avispon99
Ayuda con subprocess.Popen stdout=subprocess.PIPE
Scripting
rubia28 1 2,818 Último mensaje 9 Marzo 2021, 04:28 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines