它们根据校验和产生相同的结果:

with open('openb', 'wb') as f:
    f.write(b'asdf')

with io.FileIO('fileio', 'w') as f:
    f.write(b'asdf')


它们之间有什么区别吗?什么时候应该使用一种方法代替另一种方法?

最佳答案

实际上,open()方法将创建一个io.BufferedWriter,该IOBase继承自FileIO,而IOBase也继承自open()。尽管它们不是完全相同的类,但是它们支持基本相同的功能。我想如果您知道不需要缓冲,则可以使用FileIO。 python io docs page上有很多信息
最重要的句子是:


  原始二进制I / O通常提供对底层OS设备或API的低级别访问,并且不会尝试将其封装在高级基元中(这留给了缓冲I / O和文本I / O,稍后将在本文档中进行介绍)页)。


原始二进制I / O与io.FileIO有关,而缓冲I / O与io.BufferedWriter(方法)有关

关于python - io.FileIO和open()在二进制模式下的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53432442/

10-13 08:36