erro de subprocesso python 3 em bytes

Muito bom, eu tenho um pequeno problema com a saída do thread, eu entro em unicode ou acho que e não me deixa convertê-lo para utf-8, esse é o 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'))

Eu pulo o seguinte erro:

**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'**

se eu imprimir deixando a impressão e se você me deixar:

print(o)

mas imprime o seguinte:

**b'Microsoft Windows XP [Versi\xa2n 5.1.2600]\r\n(C) Copyright 1985-2001 Microsoft Corp.\r\n\r\nC:\\>\xa8M\xa0s? '**

e se eu mudar essas duas linhas:

string = bytes('dir',encoding="utf-8") 
print (n[0].decode("latin"))

Eu imprimo somente parte da saída

que falha?

Eu resolvi assim:

process.stdin.write("dir\n".encode())
o,e=process.communicate()
print (o.decode("utf-8"))

mas eu recebo erro:

Traceback (última chamada mais recente): Arquivo "C: \ Documents and Settings \ francisco \ Escritorio \ k.py", linha 6, em impressão (o.decode ("utf-8")) UnicodeDecodeError: 'utf-8' o codec não pode decodificar o byte 0xa3 na posição 103: byte inicial inválido

Eu apenas imprimo assim:

print (o.decode("latin"))

em latim, eu posso corrigir esse erro e imprimi-lo em utf-8?

questionAnswers(1)

yourAnswerToTheQuestion