Ich hab einen einfachen Linkcrawler in Python geschrieben.
Liest per beautifulsoup spezielle Links einer Seite aus und blättert sich so durch die Seiten immer tiefer in eine Webseite.
Die Tiefe kann ich vorgeben. Die gefundenen Links werden in ein File geschrieben und per print ausgegeben.
Es funktioniert auch perfekt wenn ich das Programm als py-Extension File oder vom IDLE aus starte.
Hab mir jetzt aber gedacht einen Dialog in Tkinter dazu zu bauen. Funktioniert uahc wieder toll mit
Konsole oder aus dem IDLE (Editor) heraus gestaret.
Wenn man das Programm aber als pyw (ohen Konsole) startet hört es einfach auf ins Fiel zu schrieben
( immer ca. nach 5kB oder ca. 250 Zeilen).
Hat das irgendwas mit einem Konsolenbuffer zu tun? oder osllt eich einfach das print rausgeben (ins File schreibe ich ja mit file.write).
Mir geht es einfach darum zu wissen was da basiert. Ich hab das print rausgegeben und es geht soweit ich überprüfen kann auch recht gut.
Aber Erklärung habe ich bisher keine gefunden.
pyw Skript macht Probleme
@mampe71: Das könnte ein Dateipuffer sein der vollläuft, also die Vermutung mit dem ``print`` ist naheliegend.
Ist die Datei während der gesamten Webseite geöffnet oder wird für jeden neuen Link die Datei geöffnet und geschlossen?
Werden kontinuierlich neue Zeilen geschrieben oder alle nach Abschluss der Aufgabe?
Was meinst du mit "print" rausgeben? Das du es aus dem Skript entfernt hast oder zur Ausgabe eingefügt?
Werden kontinuierlich neue Zeilen geschrieben oder alle nach Abschluss der Aufgabe?
Was meinst du mit "print" rausgeben? Das du es aus dem Skript entfernt hast oder zur Ausgabe eingefügt?
Ich schreibe im Programm sowohl ins File als auch auf die console.
Wenn ich das Programm ohne Console starte (pyw) hört es irgendwann nach
einer Zeit auf ins File zu schreiben. Wenn es mit COnsole (py) gestartet wird funktioniert es.
Das print schreibt den gefundenen Link in die COnsole - das f.write ins File.
Wenn ich das print auskommentiere funktioniert das Programm wie es soll
auch ohne Console.
Wie macht man ein logging dann sinnvoll in Python - Console wäre schon nett.
Oder kann man irgendwie abfrage ob eine COnsole offen ist und das print nur rauschreiben, wenn
die Console da ist? Ich finde das Verhalten trotzdem komisch.
Wenn ich das Programm ohne Console starte (pyw) hört es irgendwann nach
einer Zeit auf ins File zu schreiben. Wenn es mit COnsole (py) gestartet wird funktioniert es.
Das print schreibt den gefundenen Link in die COnsole - das f.write ins File.
Wenn ich das print auskommentiere funktioniert das Programm wie es soll
auch ohne Console.
Code: Alles auswählen
print dtag['href']
f.write(dtag['href'])
f.write('\r\n')
f.close()
master.destroy()
Oder kann man irgendwie abfrage ob eine COnsole offen ist und das print nur rauschreiben, wenn
die Console da ist? Ich finde das Verhalten trotzdem komisch.
@mampe71: Logging macht man in Python mit dem `logging`-Modul. Und dann halt in eine Datei.