gpt4 book ai didi

python - 以与 python2 和 python3 兼容的方式将字节写入标准输出

转载 作者:太空狗 更新时间:2023-10-30 01:58:43 25 4
gpt4 key购买 nike

我想要一个返回文件对象的函数,我可以使用该函数将二进制数据写入标准输出。在python2中sys.stdout就是这样一个对象。在 python3 中它是 sys.stdout.buffer

检索此类对象以使其同时适用于 python2 和 python3 解释器的最优雅/首选方法是什么?

是检查 sys.stdout.buffer 是否存在的最佳方法(可能使用 inspect 模块),如果存在,则返回它,如果不存在,假设我们在 python2 上并返回 sys.stdout

最佳答案

不用测试,用getattr()就可以了:

# retrieve stdout as a binary file object
output = getattr(sys.stdout, 'buffer', sys.stdout)

这会检索 sys.stdout 上的 .buffer 属性,但如果它不存在(Python 2),它将返回 sys.stdout 对象本身。

python 2:

>>> import sys
>>> getattr(sys.stdout, 'buffer', sys.stdout)
<open file '<stdout>', mode 'w' at 0x100254150>

python 3:

>>> import sys
>>> getattr(sys.stdout, 'buffer', sys.stdout)
<_io.BufferedWriter name='<stdout>'>

考虑到在 Python 2 中,stdout 仍然以文本模式打开,换行符在写入时仍被转换为 os.linesep。 Python 3 BufferedWriter 对象不会为您执行此操作。

关于python - 以与 python2 和 python3 兼容的方式将字节写入标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932332/

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