【发布时间】:2013-05-20 23:24:29
【问题描述】:
很好,我的线程输出有点问题,我进入unicode或者我认为不让我将它转换为utf-8,这是代码:
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'))
我跳转如下错误:
**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'**
如果我打印离开打印并且如果你让我:
print(o)
但它会打印以下内容:
**b'Microsoft Windows XP [Versi\xa2n 5.1.2600]\r\n(C) Copyright 1985-2001 Microsoft Corp.\r\n\r\nC:\\>\xa8M\xa0s? '**
如果我改变这两行:
string = bytes('dir',encoding="utf-8")
print (n[0].decode("latin"))
我只打印部分输出
失败了?
我是这样解决的:
process.stdin.write("dir\n".encode())
o,e=process.communicate()
print (o.decode("utf-8"))
但我得到错误:
回溯(最近一次通话最后一次): 文件“C:\Documents and Settings\francisco\Escritorio\k.py”,第 6 行,在 打印(o.decode(“utf-8”)) UnicodeDecodeError:“utf-8”编解码器无法解码位置 103 中的字节 0xa3:无效起始字节
我只是这样打印:
print (o.decode("latin"))
在拉丁语中,我可以更正这个错误并用 utf-8 打印它吗?
【问题讨论】:
标签: python-3.x subprocess stdin encode communicate