Status aller Dateien eines Verzeichnisses?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

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.
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
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.
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

:D
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
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)] 
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

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
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also bei mir geben beide Lösungen das exakt gleche Ergebnis, mit == getestet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

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.

Code: Alles auswählen

>>> AccessTimeNew
[]
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

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
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
Zuletzt geändert von Leonidas am Dienstag 15. Februar 2005, 13:45, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

Ich habe auf drei verschiedene Pfade versucht zuzugreifen.
Hat immer nicht geklappt.
Gibts den irgendwie ne andere Möglichkeit?

Psus82
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Geht das?

Code: Alles auswählen

print os.listdir("C:\\Programme\\")
Das das bei dir nicht geht, kommt mir sehr seltsam vor.
Zuletzt geändert von Leonidas am Dienstag 15. Februar 2005, 13:51, insgesamt 3-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

Habe ich schon gemacht.
os.listdir funktioniert und getmtime und isfile funktioniert auch.

Psus82
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

Danke habe deinen Quellcode auch probiert Leonidas.
Der funktioniert auch.
Keine Ahnung wo der Fehler liegt.
Einzeln klappt es aber zusammen nicht.

Psus82
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

Bei dem neuen Quellcode von dir kriege ich keine print Ausgabe.

Psus82
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann liegt das simpel und einfach daran, dass du auf C:\ keine Dateien hast.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Psus82
User
Beiträge: 128
Registriert: Dienstag 6. April 2004, 16:15

Da sind 2 PDFs und mehrere txts.
Die hat er mir ja auch im Quellcode davor ausgegeben.
Drei Dinge die Programmierer hassen:
1.)Sonnenlicht
2.)Frische Luft
3.)Das ätzende Geräusch zwitschernder Vögel
Antworten