Ich habe das folgende Python 2.4-Skript erstellt, das die Dateien auf einer Anzahl von LINUX-Laufwerken durchsucht und ihren Pfad und ihre Stats von os.stat in einem für Menschen lesbaren Format zurückgibt.Machen os.walk/os.stat ignorieren Berechtigung verweigert?
#!/usr/bin/env python
from datetime import datetime as dt
import os
import grp
import pwd
locations = ["/disk1", "/disk2", "/disk3", "/disk4", "/disk5", "/disk6"]
for item in locations:
for root, dirs, files in os.walk(item):
for fn in files:
path = os.path.join(root, fn)
stats = os.lstat(path)
size = str(stats.st_size)
user = pwd.getpwuid(stats.st_uid)[0]
group = grp.getgrgid(stats.st_gid)[0]
laccess = dt.fromtimestamp(stats.st_atime).strftime("%Y-%m-%d,%H:%M:%S")
lmod = dt.fromtimestamp(stats.st_mtime).strftime("%Y-%m-%d,%H:%M:%S")
c = ","
t1 = ["0,", path, c, size, c, user, c, group, c, laccess, c, lmod,"\n"]
outfile = open("/data/promigrate/DiskDashboard/Temp/filescan.csv", "at")
outfile.write("".join(t1))
outfile.close()
Allerdings habe ich festgestellt, dass ich nicht auf einige der Dateien auf dem System zugreifen kann.
Ich erhalte die folgenden Fehler:
abc12bmm -34> python files_scan.py
Traceback (most recent call last):
File "files_scan.py", line 24, in ?
stats = os.lstat(path)
OSError: [Errno 13] Permission denied: '/disk1/file5'
Ist es möglich, den Fehler in einer solchen Art und Weise zu handhaben, dass der Prozess die Erlaubnis verweigert Fehler überspringt und weiter in die nächste Datei?
Ich habe mit Ausnahmen usw. gespielt, aber keine Freude, so würde jede Hilfe sehr geschätzt werden.
Danke!
Justin
Try-except sollte hier arbeiten. Bitte zeigen Sie, was Sie versucht haben und wie es scheiterte. – Lafexlos