jos*_*sch 4 python binary stdout python-3.x
我想要一个函数返回一个文件对象,我可以用它将二进制数据写入标准输出.在python2中sys.stdout就是这样一个对象.在python3中它是sys.stdout.buffer.
检索这样一个对象的最优雅/首选方法是什么,以便它对python2和python3解释器都有效?
是检查sys.stdout.buffer(可能使用inspect模块)存在的最佳方法,如果存在,则返回它,如果不存在,则假设我们在python2上并返回sys.stdout?
Mar*_*ers 10
无需测试,只需使用getattr():
# retrieve stdout as a binary file object
output = getattr(sys.stdout, 'buffer', sys.stdout)
Run Code Online (Sandbox Code Playgroud)
这将检索.buffer属性sys.stdout,但如果它不存在(Python 2),它将返回sys.stdout对象本身.
Python 2:
>>> import sys
>>> getattr(sys.stdout, 'buffer', sys.stdout)
<open file '<stdout>', mode 'w' at 0x100254150>
Run Code Online (Sandbox Code Playgroud)
Python 3:
>>> import sys
>>> getattr(sys.stdout, 'buffer', sys.stdout)
<_io.BufferedWriter name='<stdout>'>
Run Code Online (Sandbox Code Playgroud)
考虑到在Python 2中,stdout仍然以文本模式打开,换行仍然os.linesep在编写时转换为.Python 3 BufferedWriter对象不会为您执行此操作.
| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |