我正在尝试在windows控制台中创建一个简单的文本进度条,并显示utf8字符。在
问题不是unicode字符不会显示,而是会显示。 为了显示unicode字符,我使用了一个类系统标准输出怎么办。这干扰了正常的flush()函数。在
如何在控制台中恢复flush()函数并仍然使用这个unicode类?在
#coding=<utf8>
import sys, os
#make windows console unicode friendly
if sys.platform == "win32":
os.popen('chcp 65001')
class UniStream(object):
__slots__= "fileno", "softspace",
def __init__(self, fileobject):
self.fileno= fileobject.fileno()
self.softspace= False
def write(self, text):
if isinstance(text, unicode):
os.write(self.fileno, text.encode("utf_8"))
else:
os.write(self.fileno, text)
def flush(self):
self.flush()
sys.stdout = UniStream(sys.stdout)
sys.stderr = UniStream(sys.stderr)
def progress(num):
sys.stdout.write("\r"+str(num)+"% τοις εκατό...")
sys.stdout.flush()
for i in xrange(2000):
progress(i)
x = raw_input('done')
也许你应该用更原始的方法用退格来删除之前的数字? 或者做一些类似的事情:
在返回后用空格覆盖并进行第二次返回。在
我没有看到任何闪烁时,我这样做,它只对我运行代码从命令窗口,而不是双击。在
^{pr2}$相关问题 更多 >
编程相关推荐