Error de subproceso Python 3 en bytes
Muy bien, tengo un pequeño problema con la salida del subproceso, me meto en Unicode o pienso y no me permite convertirlo a utf-8, este es el código:
import subprocess,sys,time
string = b'dir'
process = subprocess.Popen('cmd.exe', shell=True,cwd="C:\\",stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
process.stdin.write(string)
o,e=process.communicate()
process.wait()
process.stdin.close()
print (o.encode('utf-8'))
Salto el siguiente error:
**Traceback (most recent call last):
File "C:\Documents and Settings\francisco\Escritorio\k.py", line 12, in <module>
print (o.encode(utf-8))
AttributeError: 'bytes' object has no attribute 'encode'**
Si imprimo dejando la impresión y si me dejas:
print(o)
Pero imprime lo siguiente:
**b'Microsoft Windows XP [Versi\xa2n 5.1.2600]\r\n(C) Copyright 1985-2001 Microsoft Corp.\r\n\r\nC:\\>\xa8M\xa0s? '**
Y si cambio estas dos lineas:
string = bytes('dir',encoding="utf-8")
print (n[0].decode("latin"))
Imprimo solo parte de la salida
que falla?
He resuelto de esta manera:
process.stdin.write("dir\n".encode())
o,e=process.communicate()
print (o.decode("utf-8"))
pero me sale un error
Seguimiento (última llamada más reciente): Archivo "C: \ Documents and Settings \ francisco \ Escritorio \ k.py", línea 6, en impresión (o.decode ("utf-8")) UnicodeDecodeError: 'utf-8' El codec no puede decodificar el byte 0xa3 en la posición 103: byte de inicio no válido
Acabo de imprimirlo así:
print (o.decode("latin"))
en latín, puedo corregir este error e imprimirlo en utf-8?