In Python, warum ist 'r+' aber nicht 'rw' im Sinne von "Lesen & schreiben"?
In Python, wenn Sie eine Datei öffnen, verwenden wir 'r'
zu zeigen und nur gelesen 'w'
nur schreiben. Dann verwenden wir 'r+'
im Sinne von "Lesen und schreiben".
Warum nicht 'rw'
? Nicht 'rw'
sieht natürlicher aus, als 'r+'
?
Bearbeiten von Jan. 25:
Oh.. ich denke, meine Frage sieht ein wenig verwirrend.. Was ich versucht habe zu Fragen ist: 'r'
ist der erste Buchstabe von 'Lesen' und 'w'
den ersten Buchstaben von 'schreiben' so 'r'
und 'w'
natürlich Aussehen, um die Karte zu 'Lesen' und 'schreiben'. Allerdings, wenn es um das 'Lesen und schreiben', Python benutzt 'r+' anstelle von 'rw'
.
Also die Frage ist wirklich über die Namensgebung Begründung statt die Unterschiede im Verhalten zwischen Ihnen.
- Beachten Sie, dass
r+
,w+
unda+
bedeuten alle "Lesen und schreiben", aber Sie haben Feinheiten.r+
nicht eine Datei erstellen,w+
tuta+
wird an die Datei ein und erstellt wenn Sie nicht existiert. Eine catch-all -rw
wäre zweideutig in dieser Hinsicht.wr
würde nicht Lesen, wie sauber undaw
oderar
ist einfach seltsam.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python kopiert die Modi von C s
fopen()
- Aufruf.r+
ist das, was C verwendet, und die Python fest mit dem 40-Jahr-alte Konvention.r+
,w+
, unda+
drei verschiedene Dinge, und --fopen
als einer der sehr alt - C-Bibliothek-Schnittstellen -- die original-Umsetzung wohl etwas unsinnig, wenn Sie übergebenrw
, so C89 nur verboten Sie zu tun. Die POSIX -open
- Funktion mit drei-Wege-WahlO_RDONLY
,O_WRONLY
,O_RDWR
, und dann eine Reihe von Modifikatoren hat immer fiel mir als eine ergonomische Gestaltung.Nicht, nahm es als die Reine Englisch,
r+
bedeutetread extended
eigentlichPython!=English.
Alle Sprachen, hat grundlegende Regeln, und @John Kugelman erwähnt, Python stecken mit alten.Python
undEnglish
sind Variablen, weil Sie tun, eine id-Vergleich.==
ausschließlich für die id/Referenz-Gleichheit. C++ und C# und anderen erlauben, Sie zu überlasten==
für den Wert der Gleichheit, obwohl. Also entweder scheint machbar für mich.Dies ist, was passiert:
Es ist nur, wie die read/write/append-Funktion konfiguriert ist im Kern python. Einige werden sagen, dass es hat zu tun mit der alten c-Stil-fopen () - Direktiven 'r' 'w' 'r+' etc.
rw
weilrw
funktioniert nicht" ist Zirkelschluss...rw
weil das ist, was C getan hat".