Seite 1 von 1
URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 07:54
von tadeus
Hallo,
ich habe eine Url mit einer Textdatei, welche folgenden Inhalt hat
Code: Alles auswählen
2013-09-27_10:27 , 2013-09-27_16:26 , IrgendEinVerwendungszweck
2013-09-24_17:25 , 2013-09-24_18:28 , asdf
2013-09-25_18:26 , 2013-09-25_17:27 , asdf
2013-09-30_19:26 , 2013-09-30_19:27 , adf
2013-10-03_01:26 , 2013-10-11_16:17 , asasdf
Diese Textdatei möchte ich Zeile für Zeile durchgehen und gucken ob die aktuelle Zeit zwischen den angegeben Zeiten liegt. Leider scheitere ich schon am Anfang.
Ich weiß zwar, dass man mit folgendem Code die Url holt und in eine Variable einliest.
Code: Alles auswählen
link = "http://url/main.txt"
f = urllib.urlopen(link)
text = f.read()
Aber wie ich dann diese text Variable zeilenweise durchgehe, damit ich die Zeile mit string.split() in seine Einzelteile zerlegen kann, weiß ich nicht.
Wie geht das in python? Oder gibts da ne sauberere Lösung?
Danke vorab
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 08:18
von cofi
Code: Alles auswählen
url = "http://url/main.txt"
with urllib.urlopen(url) as f:
lines = f.read().split('\n')
for line in lines:
process_line(line)
oder eben gleich zeilenweise arbeiten:
Code: Alles auswählen
url = "http://url/main.txt"
with urllib.urlopen(url) as f:
for line in f:
process_line(line)
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 09:58
von tadeus
Danke schon mal. Das mit dem "with" kannte ich noch nicht.
Code: Alles auswählen
python test2.py
Traceback (most recent call last):
File "test2.py", line 12, in <module>
with urllib.urlopen(link) as f:
AttributeError: addinfourl instance has no attribute '__exit__'
Was für ein exit benötige ich da?
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 11:27
von cofi
Entschuldige, `urllib.urlopen` gibt nur ein File-like Objekt zurueck, keinen ganzen Kontextmanager (wie ein "normales" `open` das tut).
In dem Fall hilft `contextlib.closing`, das eine `__exit__` Methode erstellt die `close` aufruft.
Code: Alles auswählen
from contextlib import closing
with closing(urlllib.urlopen(url)) as f:
...
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 11:57
von tadeus
Ich hab vorhin eine einfachere Variante gefunden
Code: Alles auswählen
data = urllib.urlopen(link)
lines = data.readlines()
for line in lines: ......
geht doch, man muss nur wissen wie ^^
Danke nochmal
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 12:18
von BlackJack
@tadeus: Einfacher wäre es die zweite Zeile einfach wegzulassen, die ist nicht nötig.
Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 12:43
von Hyperion
Und noch einfacher wäre es, das
Requests-Modul zu benutzen

Re: URL mit Textdatei aufrufen - zeilenweise lesen
Verfasst: Mittwoch 16. Oktober 2013, 16:10
von cofi
@tadaeus: Das ist effektiv meine 2. Variante in kompliziert und ohne die Ressource zu schliessen.