python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决 python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'的解决方法: Python 读写文件 中文乱码 错误TypeError: write() argument must be str, not bytes+

python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'的解决方法:
Python 读写文件 中文乱码 错误TypeError: write() argument must be str, not bytes+

1.原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法:

参考:http://bbs.chinaunix.net/thread-4154743-1-1.html

下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

修改后下载地址:http://pan.baidu.com/s/1dEZQ0pz   (懒人直接下载吧)

2.修改汇总:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第772(找不到就在775)行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime))

Python 读写文件 中文乱码 错误TypeError: write() argument must be str, not bytes+

文件打开方式有问题,把之前的打开语句修改为用二进制方式打开就没有问题

fo = open("temp.txt", "wb+")  #把‘w’改成‘wb+’

1.原因是官网的是python2语法写的,看官手动把官网的HTMLTestRunner.py改成python3的语法:

参考:http://bbs.chinaunix.net/thread-4154743-1-1.html

下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html

修改后下载地址:http://pan.baidu.com/s/1dEZQ0pz   (懒人直接下载吧)

2.修改汇总:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第772(找不到就在775)行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime))

Python 读写文件 中文乱码 错误TypeError: write() argument must be str, not bytes+

文件打开方式有问题,把之前的打开语句修改为用二进制方式打开就没有问题

fo = open("temp.txt", "wb+")  #把‘w’改成‘wb+’