[Python-de] Probleme mit os.listdir() und samba; BUG?

Martin v. Löwis martin at v.loewis.de
Thu May 29 04:02:15 EDT 2003


Carl Kleffner <cmkleffner at gmx.de> writes:

> Man beachte, das os.stat und os.listdir unterschiedliche 
> Exceptions produzieren (ERRNO 2 und ERRNO 3).

Das würde ich jetzt nicht interpretieren. Vielmehr scheint es
unterschiedliche Fehler zu geben, je nachdem, ob das Verzeichnis lokal
oder auf Samba ist. Was liefert denn os.stat("c:\\rl")?

Wenn das so ist, ist es ein Fehler im Samba: Samba sollte den gleichen
Fehlercode liefern wie Windows im lokalen Fall.

Jedenfalls erklärt dieser Fehlercode das Pythonverhalten. Der
Python-Code lautet

	hFindFile = FindFirstFile(namebuf, &FileData);
	if (hFindFile == INVALID_HANDLE_VALUE) {
		errno = GetLastError();
		if (errno == ERROR_FILE_NOT_FOUND)
			return d;
		Py_DECREF(d);
		return win32_error("FindFirstFile", namebuf);
	}

und die Checkin-Message dazu lautet

revision 2.89
date: 1998/08/06 03:23:32;  author: guido;  state: Exp;  lines: +2 -0
In Win32 version of listdir(), when FindFirstFile() returns
ERROR_FILE_NOT_FOUND, return an empty list instead of raising an
exception.

Der Grund dieser Änderung (in Python 1.5.2) liegt offenbar in

http://www.codeguru.com/files/CAdvFind.html

Wenn FindFirstFile ERROR_FILE_NOT_FOUND zurückgibt, dann bedeutet das
*nicht*, dass es den Pfad nicht gibt, sondern, dass das Verzeichnis
leer ist (also das erste File nicht gefunden wurde).

Ciao,
Martin



More information about the Python-de mailing list