Autor
|
Tema: subprocess.Popen() en python 3 (Leído 2,688 veces)
|
retr02332
Desconectado
Mensajes: 89
Learn, Imagine and Create.
|
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
|
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
Mensajes: 89
Learn, Imagine and Create.
|
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
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python] Procesos en segundo plano con Popen
Scripting
|
Khaleth
|
0
|
5,987
|
9 Marzo 2010, 10:25 am
por Khaleth
|
|
|
Introducir valores automáticamente con librería subprocess [Python]
Scripting
|
Lautrab
|
0
|
2,368
|
13 Abril 2013, 14:07 pm
por Lautrab
|
|
|
Usar subprocess a través de socket Python
Scripting
|
Sentex
|
0
|
1,657
|
8 Marzo 2018, 12:03 pm
por Sentex
|
|
|
[Python] Duda con el modulo subprocess..
Scripting
|
Avispon99
|
6
|
3,769
|
2 Junio 2018, 20:38 pm
por Avispon99
|
|
|
Ayuda con subprocess.Popen stdout=subprocess.PIPE
Scripting
|
rubia28
|
1
|
3,089
|
9 Marzo 2021, 04:28 am
por tincopasan
|
|