Seite 1 von 1

Datum eines Verzeichnisses ermitteln

Verfasst: Donnerstag 28. Februar 2008, 09:19
von andrejg
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

Verfasst: Donnerstag 28. Februar 2008, 09:37
von meneliel
Müsste die Anzahl der Sekunden seit dem letzten Zugriff sein.

Verfasst: Donnerstag 28. Februar 2008, 09:47
von Rebecca
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.

Verfasst: Donnerstag 28. Februar 2008, 09:48
von audax

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)

Verfasst: Donnerstag 28. Februar 2008, 13:46
von akis.kapo
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.

Verfasst: Freitag 29. Februar 2008, 07:35
von andrejg
Danke für eure Antworten.
Werde versuchen das umzusetzen.

gruß andrej