我有一个套接字,我通过使用套接字的makefile方法创建的文件发送数据。但是,使用makefile创建的文件模式是'wrb'。
我知道'w'=写,'r'=读,'b'=二进制。我也理解您可以通过多种不同的方式将它们组合在一起,请参阅Confused by python file mode "w+",其中包含可能组合的列表。但是,我从未见过'w'和'r'在一起。
他们在一起时的行为是什么?例如,'r +'允许读写,'w +'也是如此,除了它预先截断文件。但'wr'做什么?
答案 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'结尾,这将捐赠它将以二进制模式打开。