Dynamische Datei öffnen

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
Benutzeravatar
karlson
User
Beiträge: 6
Registriert: Montag 25. September 2006, 10:53
Wohnort: localhost

Hallo,

ich bin python Anfänger und stehe vor folgendem Problem.
Ich möchte eine Datei aus dem Internet herunterladen. Bei der Datei handelt es sich um die Aufzeichnung eines Regenradars. Die Daten werden alle 10 min. aktualisiert und der Dateiname besteht aus dem aktuellen Zeitstempel
(rm20060925-100154.dat). Somit verändert sich der Dateiname ständig.
Der Beispielcode funktioniert nur solange bis sich der Zeitstempel wieder ändert.
Welche Möglichkeiten bestehen immer die aktuellste Datei zu öffnen ?

Code: Alles auswählen

#!/usr/bin/python
import urllib
req = urllib.urlopen('http://www.xxxxxxxx.de/forschung/gruppen/radar/xx_daten/rm20060925-095646.dat')
f = open('b:/dcx1.csv', 'w')
f.write(req.read())
f.close()
req.close()
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

karlson hat geschrieben:Welche Möglichkeiten bestehen immer die aktuellste Datei zu öffnen?
Hi karlson!

Du brauchst den exakten Dateinamen um etwas per HTTP herunterladen zu können. Wie bekommst du den aktuellen Dateinamen angezeigt? Rufe diese HTML-Seite auf und *parse* den aktuellen Dateinamen heraus.

Vielleicht kannst du auf den Ordner ja auch per FTP zugreifen. Dann könntest du die Dateinamen des Ordners abrufen und dann entscheiden, welche Datei du herunterladen möchtest.

- Eine HTML-Datei kannst du z.B. recht einfach mit BeautifulSoup parsen.

- FTP geht mit dem Python-Modul ftplib.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

...und willkommen im Python-Forum! :-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Wenn du keine zusätzliche Abhängigkeit einbringen willst, kannst du im allgemeinen auch sehr gut über reguläre Ausdrücke (Modul 're' in der Python-Standard-Bibliothek) Teile extrahieren.

Eine andere Option wäre es, den Dateinamen selbst anhand der aktuellen Uhrzeit zu generieren:

Code: Alles auswählen

import datetime

now = datetime.datetime.now()
fname = now.strftime('rm%Y%m%d-%H%M%S.dat')
Dabei muss allerdings auch sichergestellt sein, dass die Uhrzeiten auf beiden Systemen übereinstimmt. Ggf. musst du ein wenig verzögern oder einige Minuten abziehen.

Ich habe übrigens angenommen, dass die letzten sechs Ziffern die Uhrzeit in Stunden, Minuten und Sekunden repräsentieren. Wenn die Datei nicht sekündlich erzeugt wird (und davon gehe ich aus), müsste der Intervall der Erstellung (z.B. einmal pro Minute) einbezogen werden - wenn es denn einen festgelegten gibt.
Benutzeravatar
karlson
User
Beiträge: 6
Registriert: Montag 25. September 2006, 10:53
Wohnort: localhost

Danke für die Hilfe.
Antworten