不确定以 "wrb" 模式打开文件的行为

Unsure of the behavior for opening a file with mode "wrb"

我有一个套接字,我正在通过使用套接字的 makefile 方法创建的文件向其发送数据。但是,使用makefile创建的文件的模式是'wrb'。

我知道 'w' = 写入,'r' = 读取,'b' = 二进制。我还了解到您可以通过多种不同的方式组合它们,请参阅 Confused by python file mode "w+",其中包含可能组合的列表。但是,我从未见过 'w' 和 'r' 在一起。

他们在一起时的行为是什么?例如,'r+' 允许读取和写入,而 'w+' 也一样,只不过它会预先截断文件。但是 'wr' 是做什么的呢?

Python 2.x docs 中的描述表明您可以在不关闭文件的情况下读取和写入文件。

然而,行为并非如此。

示例:

f = open('myfile', 'wr')
f.write('THIS IS A TEST')
f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor

它会写,但不会读。如果我们用相反的选项打开文件:

f = open('myfile', 'rw')
f.read()
f.write('THIS IS ALSO A TEST')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor

观察到的行为是 open() 函数只采用文件打开选项的第一个字符,而忽略其余部分,除非它以 'b' 结尾,这将捐赠它将以二进制形式打开模式。