Seite 1 von 2
Status aller Dateien eines Verzeichnisses?
Verfasst: Montag 14. Februar 2005, 10:02
von Psus82
Tach,
Ich möchte die letzte Änderung aller Dateien in einem Verzeichniss in einer Liste speichern.
Also jedes letztes Änderungsdatum der Dateien in einem Verzeichnis.
Kann mir jemand bei diesem Problem helfen?
Hate sowas in der Art im Sinn
Code: Alles auswählen
for i in range len Filesnew:
Accesstime = [Accesstime.append os.stat(FolderToScan+Filesnew[i-1])[8]]
Filesnew ist eine Liste der Dateinamen aller Dateien in einem Verzeichniss
FolderToScan beinhaltet den Pfad des Verzeichnisses
Gruß
Psus82
Edit (Leonidas): Code in Python Tags gesetzt.
re:
Verfasst: Montag 14. Februar 2005, 10:36
von Gast
Code: Alles auswählen
import os
FolderToScan = "C:"
files = os.listdir(FolderToScan)
access_time_list = []
for f in files:
if os.path.isfile(f):
access_time_list.append((f, os.path.getmtime(f)))
Edit (Leonidas): Code in Python Tags gesetzt.
Thanks
Verfasst: Montag 14. Februar 2005, 10:40
von Psus82
Verfasst: Montag 14. Februar 2005, 23:18
von BlackJack
Oder als LC
Code: Alles auswählen
import os
path = '.'
access_time_list = [(f, os.path.getmtime(f))
for f in os.listdir(path)
if os.path.isfile(f)]
Seid ihr sicher?
Verfasst: Dienstag 15. Februar 2005, 11:58
von Psus82
Seid ihr sicher das eure beiden Lösungen funktionieren?
Ich habe beide ausprobiert und siel liefern mir eine leere List wenn ich sie mit print ausgebe.
Gruß
Psus82
Verfasst: Dienstag 15. Februar 2005, 12:38
von Leonidas
Also bei mir geben beide Lösungen das exakt gleche Ergebnis, mit == getestet.
Klappt nicht
Verfasst: Dienstag 15. Februar 2005, 12:44
von Psus82
Hier ist mein Code
Code: Alles auswählen
AccessTimeNew = [(f, os.path.getmtime(f)) for f in os.listdir("c:") if os.path.isfile(f)]
bei mir kommt immer ne leere Liste raus.
Verfasst: Dienstag 15. Februar 2005, 13:23
von Leonidas
Bei "c:" bekomme ich alle Dateien, aber "c:\\" aber nicht mehr. Komische Sache (Liegt vermutlich an dem geescapeten Backslash, den mah listdir wohl nicht, vermutlich mag listdir keine Slashes hinten). Aber dein Problem kann ich nicht nachvollziehen. Was hast du denn für ein Betriebssystem, Python Version?
BS un Py Vers.
Verfasst: Dienstag 15. Februar 2005, 13:28
von Psus82
Mein BS ist Windows 2000 und meine Py version ist 2.3
Leider kann ich die Py version nicht updaten da ein anderes Programm nur mit dieser Version arbeitet.
Psus82
Re: BS un Py Vers.
Verfasst: Dienstag 15. Februar 2005, 13:40
von Leonidas
Psus82 hat geschrieben:Leider kann ich die Py version nicht updaten da ein anderes Programm nur mit dieser Version arbeitet.
Hmm, vielleicht doch. Wenn es um Module geht, sollte das ja kein Problem sein, ich habe viele auf Python 2.4 portiert.
Hat dein Programm Lesezuriff auf C:? Kannst du es mit einem anderen Ordner versuchen?
Auch schon probiert.
Verfasst: Dienstag 15. Februar 2005, 13:44
von Psus82
Ich habe auf drei verschiedene Pfade versucht zuzugreifen.
Hat immer nicht geklappt.
Gibts den irgendwie ne andere Möglichkeit?
Psus82
Verfasst: Dienstag 15. Februar 2005, 13:47
von BlackJack
Kannst Du die Sachen nicht mal interaktiv einzeln ausprobieren? Also ob ein os.listdir("c:") schon eine leere Liste liefert, oder ob aus der Liste einfach alles rausgefiltert wird.
Verfasst: Dienstag 15. Februar 2005, 13:49
von Leonidas
Geht das?
Das das bei dir nicht geht, kommt mir sehr seltsam vor.
Auch schon probiert.
Verfasst: Dienstag 15. Februar 2005, 13:49
von Psus82
Habe ich schon gemacht.
os.listdir funktioniert und getmtime und isfile funktioniert auch.
Psus82
Verfasst: Dienstag 15. Februar 2005, 13:53
von Leonidas
Das?
Code: Alles auswählen
import os
FolderToScan = "C:"
files = os.listdir(FolderToScan)
for f in files:
print f
Vielleicht können wir uns dem Fehler schrittweise nähern.
Danke auch probiert.
Verfasst: Dienstag 15. Februar 2005, 13:59
von Psus82
Danke habe deinen Quellcode auch probiert Leonidas.
Der funktioniert auch.
Keine Ahnung wo der Fehler liegt.
Einzeln klappt es aber zusammen nicht.
Psus82
Verfasst: Dienstag 15. Februar 2005, 14:07
von Leonidas
Folgendes?
Code: Alles auswählen
import os
FolderToScan = "C:"
files = os.listdir(FolderToScan)
for f in files:
if os.path.isfile(f):
print (f, os.path.getmtime(f))
Kann es sein, dass bei dir die Liste mit den Variablen global ist und du von einer Funktion darauf zugreifen versuchst?
Keine print Ausgabe.
Verfasst: Dienstag 15. Februar 2005, 14:12
von Psus82
Bei dem neuen Quellcode von dir kriege ich keine print Ausgabe.
Psus82
Verfasst: Dienstag 15. Februar 2005, 14:20
von Leonidas
Dann liegt das simpel und einfach daran, dass du auf C:\ keine Dateien hast.
Da sind Dateien.
Verfasst: Dienstag 15. Februar 2005, 14:22
von Psus82
Da sind 2 PDFs und mehrere txts.
Die hat er mir ja auch im Quellcode davor ausgegeben.