Ich bin leider noch Anfänger in Sachen Python. Heute Nachmittag habe ich versucht ein kleines Programm zu schreiben, das aus dem Quelltext einer Webseite Links herausfiltert.
Das funktioniert auch eigentlich ganz gut. Nur wenn ich das Programm mit einem Doppelklick starte (unter Linux - Ubuntu) kommt ja immer die Abfrage "Wollen Sie »rapid« ausführen oder Ihren Inhalt anzeigen lassen?".
Wenn ich nun auf "im Terminal ausführen" klicke funktioniert alles. Klicke ich jedoch nur auf "Ausführen" startet zwar das Programm - jedoch wird nichts in die Datei geschrieben.
Vielleicht kann mir jemand das Verhalten erklären? Braucht Python die Konsole um mit Dateien zu arbeiten?
Da das mein erstes (halbwegs sinnvolles) Programm ist würde es mich auch freuen, wenn Ihr mir vielleicht noch ein paar Tipps geben könntet - was würdet Ihr anderes machen? Oder wo habe ich schlimme Fehler gemacht usw.
Könnte man das mit der Zwischenablage auch mit TK lösen? (Habe leider nichts gefunden.) Gibt es eine elegantere Lösung für das suchen?
Vielen Dank!
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import gtk
import os
from Tkinter import *
import tkMessageBox
class Rapid:
def clipboard(self):
""" Liefert die Links aus Zwischenablage."""
global filelist
filelist = []
clipboard = gtk.clipboard_get() # Liest die Zwischenablage aus
text = clipboard.wait_for_text()
for text in text.splitlines(): # Zeilenweise verarbeitung
sr = text.find('http://rapidshare.com/files/') # Findet die Anfangsposition
er = text.find('.%s' %(filetype))
if sr > 0:
filelist.append(text[sr:er+4]) # Fügt den Link in die Liste filelist
if verbose:
print 'Zwischenablage kopiert'
def savefile(self):
"""Speichert die Ergebnisse in einer Datei."""
global alreadyopen
if alreadyopen:
f = file(conf_file, 'a')
else:
f = file(conf_file, 'w')
alreadyopen = True
for ding in filelist:
f.write(ding)
f.write(os.linesep)
if verbose:
print '%d Elemente in die Datei %s/%s geschrieben' %(len(filelist), os.getcwd(), conf_file)
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame, text="Beenden", fg="red", command=frame.quit)
self.button.pack(side=RIGHT)
self.get_cache = Button(frame, text="Zwischenablage Kopieren und speichern", command=self.clipboard_save)
self.get_cache.pack(side=LEFT)
def clipboard_save(self):
rapid.clipboard()
rapid.savefile()
global alreadyopen
#<config>
verbose = True # True|False Gibt an, ob die Aktion auf der Konsole dokumentiert werden soll.
conf_file = 'dl.txt' # Dateiname zum Speichern der Links
filetype = "rar" # Art der Dateien die Freigestellt werden soll.
alreadyopen = False # True|False Soll die Datei jedesmal überschrieben werden?
#</config>
rapid = Rapid()
root=Tk()
root.title("Rapidshare Linkfreisteller")
app = App(root)
root.mainloop()