Ответ 1
Python копирует режимы из C fopen()
вызов. r+
- это то, что использует C, и Python придерживался 40-летнего соглашения.
В Python при открытии файла мы используем 'r'
для указания только для чтения и 'w'
только для записи. Затем мы используем 'r+'
для обозначения "чтение и запись".
Почему бы не использовать 'rw'
? Не выглядит ли 'rw'
более естественным, чем 'r+'
?
Редактировать 25 января:
Ой.. Думаю, мой вопрос выглядит немного запутанным. Я пытался спросить: 'r'
- первая буква "read" и 'w'
первая буква "write", поэтому 'r'
и 'w'
выглядят естественными, чтобы отображать "читать" и "писать". Однако, когда дело доходит до "чтения и записи", Python использует "r +" вместо 'rw'
.
Таким образом, вопрос состоит в том, что на самом деле речь идет о рациональном именовании вместо различий между ними.
Python копирует режимы из 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
Как только функция чтения/записи/добавления сконфигурирована в основном питоне. Некоторые скажут, что это связано со старыми директивами fopen() c-style 'r' 'w' 'r +' и т.д.