Datum eines Verzeichnisses ermitteln

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.
Antworten
andrejg
User
Beiträge: 4
Registriert: Mittwoch 14. Juni 2006, 15:00
Wohnort: Puderbach

Hallo zusammen,

ich versuche ein Skript zu schreiben, der aus ein Verzeichnis die Unterverzeichnisse an Hand von Datum in ein Archivverzeichnis verschiebt und zwar es sollen 2 jüngsten Verzeichnisse stehen bleiben und alle anderen müssen weg.
Folgenden Code habe ich soweit fertig:

Code: Alles auswählen

#!/usr/bin/python
import sys
import re
import os
from datetime import date
import time
import dircache

if __name__=='__main__':
    oPath = 'Pfand_zum_Verzeichnis'
    f=open('test.txt', 'w')
    if os.path.isdir (oPath):
      a = dircache.listdir(oPath)
      for aname in a:
        f.write (aname + '\n')
        if os.path.isdir (oPath + '/' + aname):
          b = dircache.listdir(oPath + '/' + aname)
          for bname in b:
            n = oPath + '/' + aname + '/' + bname
            print os.path.getctime(n)
            #print time.asctime(os.path.getctime(n))
            #print time.strftime("%d %b %Y %H:%M:%S +0000", os.path.getctime(n))

f.close
Die auskommentierte Zeilen bringen bei mir Fehlermeldungen.
Die Ausgabe von getctime sieht bei mir wie folgt aus:

Code: Alles auswählen

1204117395
1204117433
1204118546
1204118503
1204118464
1204116606
1204116523
1204116705
1204116546
1204116649
1204116498
Damit kann ich nichts anfangen.
Wie mache ich das?

gruß andrej
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Müsste die Anzahl der Sekunden seit dem letzten Zugriff sein.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Nein, das sind die Sekunden seit dem (bei Unixen) 1.1.1970:
docs.python.org hat geschrieben:getctime(path)
Return the system's ctime which, on some systems (like Unix) is the time of the last change, and, on others (like Windows), is the creation time for path. The return value is a number giving the number of seconds since the epoch (see the time module).
Mit time.ctime z.B. kann man das umrechnen, aber wenn du nur die neusesten Dateien rausfinden willst, ist das Format so ja ganz praktisch.

Ach ja, und ich wuerde mir mal os.path.join ansehen.
Zuletzt geändert von Rebecca am Donnerstag 28. Februar 2008, 09:48, insgesamt 1-mal geändert.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

In [11]: t = os.path.getctime('LSort.java')

In [10]: datetime.datetime.fromtimestamp(t)
Out[10]: datetime.datetime(2008, 2, 27, 18, 29, 56)
Benutzeravatar
akis.kapo
User
Beiträge: 127
Registriert: Freitag 1. September 2006, 12:58

Darf ich anmerken, dass ihr (nach der Beschreibung von oben) nach der mtime sucht.

mtime = Zeitpunkt der Verzeichnis (/File) Erstellung EDIT1: oder der letzen Anderung des Inhalts [1]
atime = Zeitpunkt des letztes Zugriffs auf das Verzeichnis/File
ctime = Zeitpunkt, wo sich Access-permissions oder ownership des Verzeichnis/Files zuletzt geändert haben

EDIT2:
[1] Wobei der Inhalt sich nicht wirklich ändern muss, auch wenns in 99,99999% der Fällen so ist. Theoretisch reicht ein schreibender Zugriff auf die Datei mit close() am Ende, um die mtime upzudaten. Ob die Daten sich ändern oder man dasselbe nochmal reinschreibt, ist egal.
andrejg
User
Beiträge: 4
Registriert: Mittwoch 14. Juni 2006, 15:00
Wohnort: Puderbach

Danke für eure Antworten.
Werde versuchen das umzusetzen.

gruß andrej
Antworten