Hm! Hab was dummes gefunden... Zumindest für Windows
Unter Windows gibt es ja die Katastrophe mit den "Schein Verzeichnissen". Damit alte Programme in alten Pfaden schreiben können, diese aber auf neue Pfade umgeleitet werden usw...
Heißen Junction und meinen wohl sowas wie symlinks
Kann man in der cmd.exe sich z.B. so anzeigen lassen:
Code: Alles auswählen
C:\>cd /d %LOCALAPPDATA%
C:\Users\jens\AppData\Local>dir /al
Datenträger in Laufwerk C: ist Win10 1
Volumeseriennummer: 9E8F-2FF3
Verzeichnis von C:\Users\jens\AppData\Local
18.01.2016 08:52 <JUNCTION> Anwendungsdaten [C:\Users\jens\AppData\Local]
18.01.2016 08:52 <JUNCTION> Temporary Internet Files [C:\Users\jens\AppData\Local\Microsoft\Windows\INetCache]
18.01.2016 08:52 <JUNCTION> Verlauf [C:\Users\jens\AppData\Local\Microsoft\Windows\History]
0 Datei(en), 0 Bytes
3 Verzeichnis(se), 19.210.612.736 Bytes frei
Ein os.walk() ignoriert diese (Selbst bei followlinks=True)...
Ein os.scandir() allerdings nicht
Das dumme:
C:\Users\jens\AppData\Local\Anwendungsdaten zeigt auf:
C:\Users\jens\AppData\Local
Also eine schöne verschachtelte Endlosschleife, wenn man da mit os.scandir() rekursiv durchwandert
Zum selbst probieren: os.walk() listet u.a.
Anwendungsdaten nicht:
Code: Alles auswählen
for root, dirs, files in os.walk(os.environ["LOCALAPPDATA"], followlinks=True):
print(root)
Mit os.scandir():
Code: Alles auswählen
for entry in os.scandir(os.environ["LOCALAPPDATA"]):
print(entry)
Listet u.a.: <DirEntry 'Anwendungsdaten'>, <DirEntry 'Temporary Internet Files'> und <DirEntry 'Verlauf'> auf...
Dabei ist ein
entry.is_symlink() immer
False
Aber auch
os.path.islink(entry.path) liefert immer
False
Also
os.walk() versucht eigentlich auch in der Verzeichnis wie
C:\Users\jens\AppData\Local\Anwendungsdaten rein zu gehen... Aber das anschließende
os.listdir() schlägt fehl... Sieht man aber erstmal nicht, aber so:
Code: Alles auswählen
def walk_error(err):
print("Error: %s" % err)
for root, dirs, files in os.walk(os.environ["LOCALAPPDATA"], onerror=walk_error, followlinks=True):
pass
Liefert dann:
Error: [WinError 5] Zugriff verweigert: 'C:\\Users\\jens\\AppData\\Local\\Anwendungsdaten'
Error: [WinError 5] Zugriff verweigert: 'C:\\Users\\jens\\AppData\\Local\\Microsoft\\Windows\\INetCache\\Content.IE5'
Error: [WinError 5] Zugriff verweigert: 'C:\\Users\\jens\\AppData\\Local\\Microsoft\\Windows\\Temporary Internet Files'
Error: [WinError 5] Zugriff verweigert: 'C:\\Users\\jens\\AppData\\Local\\Temporary Internet Files'
Error: [WinError 5] Zugriff verweigert: 'C:\\Users\\jens\\AppData\\Local\\Verlauf'
...und deswegen fehlen die...