Unter der Haube Python 2.4 gelangt das die gebautet open
‚Argumente auf der fopen
Funktion des Betriebssystems. Python führt unter bestimmten Bedingungen einen Fehler in der Moduszeichenfolge aus.
if (strcmp(mode, "U") == 0 || strcmp(mode, "rU") == 0)
mode = "rb";
Wenn Sie also einen oberen Fall passieren U
oder rU
es wird die Datei für binäre Lesen öffnen. Mit Blick auf die GNU-libc-Quelle und entsprechend der MSDN-Seite, die die Windows-Implementierung von beschreibt, wird die Option 'u
' ignoriert.
Mit mehr als einem Modus Bezeichner (‚r
‘, ‚w
‘ und ‚a
‘) im Modus Zeichenfolge hat keine Wirkung. Dies kann durch einen Blick auf die GNU libc Implementierung Modus Zeichenfolgenanalyse zu sehen:
switch (*mode)
{
case 'r':
omode = O_RDONLY;
break;
case 'w':
omode = O_WRONLY;
oflags = O_CREAT|O_TRUNC;
break;
case 'a':
omode = O_WRONLY;
oflags = O_CREAT|O_APPEND;
break;
default:
__set_errno (EINVAL);
return NULL;
}
Das erste Zeichen des Modus-String ist für einen ‚r
‘ gesucht, ‚w
‘ oder ‚a
‘, wenn es nicht ist Bei einem dieser Zeichen wird ein Fehler ausgelöst.
Wenn eine Datei als "wua
" geöffnet wird, wird sie daher nur zum Schreiben geöffnet, wenn sie nicht existiert und abgeschnitten wird. 'u
' und 'a
' werden ignoriert.
Danke für die Erklärung, wie die Dinge intern implementiert werden! – balu