Seite 1 von 1

Dateien des aktuellen Tages erfassen und weiterverarbeiten

Verfasst: Mittwoch 18. Juni 2008, 15:13
von Kern
Hallo,

bin neu in diesem Forum und muss euch direkt mit meiner ersten Frage quälen. Habe mich seit einigen Tagen in die Sprache Python eingelesen und versuche nun ein Programm zu schreiben.

Das Programm soll aus einer Vielzahl von Log Dateien täglich die neusten nehmen, diese erfassen und ausgeben und anschließend über Mail weiterverschicken.

Code: Alles auswählen

import os

liste=os.listdir ("/home/hkernbach/python/logs")
print liste
Damit hätte ich die Zusammenfassung der vorhandenen Dateien, auch schon nach Zeit, aufgrund der Dateinamen. Der nun folgende Zwischenteil ist für mich relativ problematisch.

Mein primäres Problem dabei wäre, wie ich die Daten des aktuellen Tages erfassen. D.h.: Wie sage ich, dass das Programm heute erstelle Dateien ausfindig machen soll. Das anschließende erfassen und verschicken stellt kein Problem dar.

MfG KeRn

Edit: Also Praktisch: Wenn heutiges Datum = Datum eines Objektes der Liste (an dem es erstellt wurde, dann erfasse dieses und schreibe es in "x".

Anschließend muss der Inhalt von "x" ausgelesen werden und per Mail verschickt werden.

Re: Dateien des aktuellen Tages erfassen und weiterverarbeit

Verfasst: Mittwoch 18. Juni 2008, 16:31
von gerold
Kern hat geschrieben:Datum eines Objektes der Liste
Hallo Kern!

Willkommen im Python-Forum!

- ``os.path.getmtime`` --> http://docs.python.org/lib/module-os.path.html#l2h-2177
- ``os.path.getctime``
- ``os.path.getatime``

mfg
Gerold
:-)

Verfasst: Mittwoch 18. Juni 2008, 18:17
von Kern
Danke für die schnelle Hilfe ! :)

Verfasst: Donnerstag 19. Juni 2008, 08:06
von n4p
kleine Frage am Rande.
Würde irgendwas dagegen sprechen das mit os.stat zu machen?
Hab gestern kurz geschaut und hätte das eigentlich so gemacht.

Verfasst: Donnerstag 19. Juni 2008, 08:28
von gerold
n4p hat geschrieben:kleine Frage am Rande.
Würde irgendwas dagegen sprechen das mit os.stat zu machen?
Hab gestern kurz geschaut und hätte das eigentlich so gemacht.
Hallo n4p!

Nein. ``os.path.getctime`` ist anders zu verwenden. Das ist alles.

Code: Alles auswählen

>>> import os
>>> os.path.getctime(r"J:\Ablage")
1155638598.796875
>>> import time
>>> time.localtime(os.path.getctime(r"J:\Ablage"))
(2006, 8, 15, 12, 43, 18, 1, 227, 1)
>>>

Code: Alles auswählen

>>> import os
>>> os.stat(r"J:\Ablage")
(16895, 0L, 0, 0, 0, 0, 0L, 1213860386, 1213718179, 1155638598)
>>> os.stat(r"J:\Ablage").st_ctime
1155638598.796875
>>> import time
>>> time.localtime(os.stat(r"J:\Ablage").st_ctime)
(2006, 8, 15, 12, 43, 18, 1, 227, 1)
>>>
mfg
Gerold
:-)

Verfasst: Donnerstag 19. Juni 2008, 08:36
von n4p
Okay Dankeschön! :)

Verfasst: Montag 23. Juni 2008, 16:11
von Kern
So.. mein Programm ist soweit mehr oder weniger fertig. Nun habe ich aber noch eine Frage.
Ich weiß nicht wie ich phyton sagen soll, dass es in einem Ordner alle Dateien untersucht und nicht nur eine gezielte Datei. Für eine gezielte Datei funktioniert es super ! Danke an simplemail ;)

Verfasst: Montag 23. Juni 2008, 16:20
von Rebecca

Code: Alles auswählen

>>> import os
>>> os.listdir("/tmp")
gibt dir eine Liste mit Dateinamen.

Verfasst: Montag 23. Juni 2008, 16:26
von Kern
Danke, aber das weiß ich, siehe mein erster Post :)
Meine Frage ist, wie ich diese dann weiter anwende.

Ein simples Beispiel:

Ich hab einen Ordner. In dem Ordner befinden sich 10 Dateien. Jetzt soll das Programm 10 Dateien einlesen und ausgeben. Wie würde ich das machen?

Das ist mein Problem. Die Anwendung für eine Datei ist ja kein Problem. Linuxmäßig ala "/home/test/python/logs/*.log-*" funktioniert es ja natürlich nicht ;)

Verfasst: Montag 23. Juni 2008, 17:11
von EyDu
Kern hat geschrieben:Meine Frage ist, wie ich diese dann weiter anwende.
Einfach mit einer for-Schleife alle Elemente der Liste abarbeiten. Bei so einer Frage fällt mir natürlich ein: Hast du das Tutorial durchgearbeitet?

Verfasst: Montag 23. Juni 2008, 17:57
von gerold
Kern hat geschrieben:Ein simples Beispiel
Hallo Kern!

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import os
import time

LOGDIR = "/home/test/python/logs" # und alle Unterordner

today = time.localtime()[:3] # (JAHR, MONAT , TAG)
new_logfiles = []
for (dirpath, dirnames, filenames) in os.walk(LOGDIR):
    for filename in filenames:
        if filename.endswith(".log"):
            filename = os.path.join(dirpath, filename)
            mday = time.localtime(os.path.getmtime(filename))[:3]
            if mday == today: # nur heute modifizierte Dateien
                new_logfiles.append(filename)
print new_logfiles
mfg
Gerold
:-)

Verfasst: Montag 23. Juni 2008, 18:12
von Kern
Habe das Tutorial nicht gelesen :oops:
Eher nen Mix aus Forum, Buch und http://docs.python.org/ref/ref.html
Sorry wenn ich einigen mit solchen Fragen auf die Nerven gehe.

@ gerold: Nochmals vielen Dank. os.walk + die Schleife wars :D

Verfasst: Montag 23. Juni 2008, 20:16
von lunar
Wenn ich hier nochmal das path.py [1] Modul in den Raum werfen darf, das ist für umfangreiche Arbeiten am Dateisystem nämlich um einiges komfortabler als die Standard-os.path-API.

[1] http://www.jorendorff.com/articles/python/path/