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

时间:2015-05-08 15:20:03

标签: python sockets file-io

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

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

他们在一起时的行为是什么?例如,'r +'允许读写,'w +'也是如此,除了它预先截断文件。但'wr'做什么?

1 个答案:

答案 0 :(得分:1)

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'结尾,这将捐赠它将以二进制模式打开。