gpt4 book ai didi

python - 如何使 python StreamWriter 需要 unicode 输入?

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:11 26 4
gpt4 key购买 nike

python 编解码器模块提供了 StreamWriter 类,用于对输出流进行透明编码。例如:

outstream = codecs.getwriter('utf8')(sys.__stdout__)
outstream.write(u'\u2713')
outstream.write(' A-OK!\n') # I want this to fail!
outstream.close()

但是我对默认 StreamWriter 的问题是它除了 str 对象外还有 unicode 对象。如果我的程序正在向这个流写入一个 str,这是一个错误,我希望它失败!有没有一种方法可以在不编写我自己的强制写入对象类型的 StreamWriter 的情况下实现这一点?

此外,我不希望我的解决方案对 sys.stdout.encodingsys.stdout.isatty()locale.getpreferredencoding 敏感()sys.getfilesystemencoding()os.environ["PYTHONIOENCODING"] 或 python 尝试变聪明的任何其他方式。

最佳答案

如果可能,请在 Python 3 中执行您想执行的操作,Python 3 对 unicode 和 bytes 的区别更大。否则,您需要子类化 StreamWriter,例如:

import codecs

class StrictUTF8Writer(codecs.StreamWriter):
'''A StreamWriter for utf8 that requires written objects be unicode'''
encode = codecs.utf_8_encode

def write(self, object):
if not isinstance(object, unicode):
raise ValueError('write() requires unicode object')
return codecs.StreamWriter.write(self, object)

关于python - 如何使 python StreamWriter 需要 unicode 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com