在 Python 中,打开文件时,我们使用'r'
来表示只读和'w'
只写。然后我们用'r+'
来表示"读写"。
为什么不使用'rw'
?'rw'
不是看起来比'r+'
更自然吗?
1月25日编辑:
哦。。我想我的问题看起来有点令人困惑。我想问的是:'r'
是"阅读"的第一个字母,'w'
"写"的第一个字母,所以'r'
和'w'
看起来很自然地映射到"读"和"写"。但是,当涉及到"读写"时,Python使用"r+"而不是'rw'
。
所以问题实际上是关于命名原理,而不是它们之间的行为差异。
C 的 fopen()
调用中复制模式。 r+
是C语言使用的,Python坚持了40年前的惯例。
不要把它当作纯英语,r+
实际上意味着read extended
,Python!=English.
所有语言都有基本规则,@John Kugelman提到的,Python坚持使用旧规则。
这是发生的情况:
>>> f1 = open("blabla.txt", 'rw');
Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:18:40) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> f1=open("blabla.txt",'rw')
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
f1=open("blabla.text",'rw')
ValueError: must have exactly one of create/read/write/append mode
这就是核心 python 中配置读/写/追加函数的方式。有人会说这与旧的 c 样式 fopen() 指令r
w
r+
等有关。