Dateien des aktuellen Tages erfassen und weiterverarbeiten

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
Kern
User
Beiträge: 7
Registriert: Mittwoch 18. Juni 2008, 13:45
Kontaktdaten:

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Kern
User
Beiträge: 7
Registriert: Mittwoch 18. Juni 2008, 13:45
Kontaktdaten:

Danke für die schnelle Hilfe ! :)
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
n4p
User
Beiträge: 55
Registriert: Dienstag 10. Juni 2008, 11:05

Okay Dankeschön! :)
Kern
User
Beiträge: 7
Registriert: Mittwoch 18. Juni 2008, 13:45
Kontaktdaten:

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 ;)
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Code: Alles auswählen

>>> import os
>>> os.listdir("/tmp")
gibt dir eine Liste mit Dateinamen.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Kern
User
Beiträge: 7
Registriert: Mittwoch 18. Juni 2008, 13:45
Kontaktdaten:

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 ;)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Kern
User
Beiträge: 7
Registriert: Mittwoch 18. Juni 2008, 13:45
Kontaktdaten:

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
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/
Antworten