Wetterprogramm funktioniert nich!

Fragen zu Tkinter.
Antworten
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Hi,
ich habe folgendes Problem:

Code: Alles auswählen

Traceback (most recent call last):
  File "J:\JT_proj\python\wetterprog\wetter2.py", line 475, in <module>
    writeHtml(daten)
NameError: name 'daten' is not defined

Das ist mein Python - Skript:

http://paste.pocoo.org/show/394856/
Zuletzt geändert von jtschoch am Mittwoch 25. Mai 2011, 14:10, insgesamt 2-mal geändert.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
BlackJack

@jtschoch: Wo definierst Du `daten` denn Deiner Meinung nach!?
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

@jtschoch: Deine imports bzgl. Tkinter solltest du dir auch mal anschauen, ich denke einmal importieren reicht normalerweise.

Gruß...busfahrer
Alles wird gut ;-)
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

ich weiß,
aber ich hab noch die Shell Version da hab ich Daten auch nicht definiert

Code: Alles auswählen

# -*- coding: cp1252 -*-
#Module
import mhlib
import sys
import time
import smtplib
import base64
import HTML 
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os

def programminfo():
    
    print "Name: Wetterprogramm"
    print "Beschreibung: Ein Programm zum Wetterdaten aufschreiben"
    print "Version: 1.0"
    
    
###############################################################################
def sendmail():


    #Login& Absenderdaten

    
    print ""
    print ""
    passw = raw_input('')
    print ""
    info = raw_input('Hier kann noch eine Info fuer diese Mail reingeschrieben werden:\n')
    Wochentag = time.strftime("%a %x",time.gmtime()) 
    mailserver = 'mail.gmx.net'
    user = ''"
    passwort =  (passw)
    

    From = ""
    to = ""
    #to = ""
    
    msg = MIMEMultipart('alternative')
    msg['Subject'] = ("Wetter von " + Wochentag)
    msg['From'] = From
    msg['To'] = to
    
    mailsendmessage = open('mailsendmessage.html', 'r')
    
    mailtext = "Aktuelle Wetterdaten:\n"
    mailtext = mailtext + mailsendmessage.read()
    mailtext = mailtext + "Anmerkung:" + info
    mailtext = mailtext +  "Diese Informationen wurde mit Python gesendet\n"

    
    textcode = MIMEText(mailtext, 'html')
    msg.attach(textcode)
      
    s = smtplib.SMTP(mailserver)
    s.login(user, passwort)
    s.sendmail(From, to, msg.as_string())
    
    print ("")
    print ("Sende E-Mail an:")
    print ("jonas.tschoche@gmx.de")
    print ("tschoche@googlemail.de")

    mailsendmessage.close()

###############################################################################

def inputData():
    
    #Temperatur
    print ("")
    print("Temperatur:")
    print("")
    temp = raw_input('Bitte Temp. angeben:')
    taupunkt = raw_input('Bitte den Taupunkt ein:')
    luftf = raw_input('Bitte Luftfeuchtigkeit angeben:')
    #############################################################

    #Winddaten
    print("")
    print ("Wind:")
    print("")
    windgesch = raw_input('Bitte Windgeschwindigkeit in km/h angeben:')
    windtemperatur = raw_input('Bitte die Windtemp. angeben:')
    windrichtung = raw_input('Bitte die Windrichtung angeben:')

    #############################################################

    #Wettersymbole
    print("")
    print ("Wettersymbole")
    print("")

    symbol = raw_input('Bitte schreibe das Wettersymbol ein:')
    vorhersage = raw_input('Bitte schreibe vorhersage ein:') 
    luftdruck = raw_input('Wie ist der Luftdruck heute:')
    ###############################################################

    #Regen
    print("")
    print ("Regen")
    print("")
    regen = raw_input('Bitte den Niederschlag angeben:')

    ##############################################################

    #Wolken
    
    print("")
    print ("Wolken")
    print("")
    
    wolkeng = raw_input('Bitte gebe die Wolkengroesse an (grosse, mittel, kleine):')
    wolkend = raw_input('Bitte gebe an ob es (viele, mittel, wenig, oder gar keine) Wolken da sind :')
    print("")
    ##############################################################

    #Ausgabe im Textdokument

    zeit = time.strftime("%X ")
    Wochentag = time.strftime("%a %x",time.gmtime()) 
    Monat = time.strftime("%Y_%m",time.gmtime())
    Jahr = time.strftime("%Y",time.gmtime())




    os.popen("dir /B ...\""+ Jahr ) 
    #os.mkdir(Jahr)
        

    pfad = (Jahr + "\Wetter-" + Monat)
    wetter = open(pfad + ""'.txt', 'a')
    
    
    text = '\n| %-12s| %-6s/%-5s | %-9s| %-18s| %-15s|' % (Wochentag, temp, taupunkt, windgesch, symbol, regen)
    text1 = '\n| %-12s| %-12s | %-3s/ %-3s| %-7s& %-10s | %-7s/ %-5s|' % (zeit, luftf, windtemperatur, windrichtung, luftdruck, vorhersage, wolkeng, wolkend)
 
    wetter.write(text)
    wetter.write(text1)
    wetter.write("\n" "---------------------------------------------------------------------------------------")
    wetter.close()

    wetterdaten = {
        "Datum": Wochentag,
        "Temp": temp,
        "Taupunkt": taupunkt,
        "Wind": windgesch,
        "Symbol": symbol,
        "Regen": regen,
        "Zeit": zeit,
        "Luftf": luftf,
        "Windtemp": windtemperatur,
        "Windrichtung": windrichtung,
        "Luftdruck": luftdruck,
        "Wolkengroesse": wolkeng,
        "Wolkenanzahl": wolkend
        }
    return wetterdaten
    ################################################################


def readFromFile():
    Wetter = open('Wetter.html', 'r')
    zeilen =  Wetter.readlines()
    Wetter.close()
    
    GesamtZeilen = len(zeilen)
    mailsendmessage = open('mailsendmessage.html', 'w')
    mailsendmessage.write(zeilen[GesamtZeilen-23])
    mailsendmessage.write(zeilen[GesamtZeilen-22])
    mailsendmessage.write(zeilen[GesamtZeilen-21])
    mailsendmessage.write(zeilen[GesamtZeilen-20])
    mailsendmessage.write(zeilen[GesamtZeilen-19])
    mailsendmessage.write(zeilen[GesamtZeilen-18])
    mailsendmessage.write(zeilen[GesamtZeilen-17])
    mailsendmessage.write(zeilen[GesamtZeilen-16])
    mailsendmessage.write(zeilen[GesamtZeilen-15])
    mailsendmessage.write(zeilen[GesamtZeilen-14])
    mailsendmessage.write(zeilen[GesamtZeilen-13])
    mailsendmessage.write(zeilen[GesamtZeilen-12])
    mailsendmessage.write(zeilen[GesamtZeilen-11])
    mailsendmessage.write(zeilen[GesamtZeilen-10])
    mailsendmessage.write(zeilen[GesamtZeilen-9])
    mailsendmessage.write(zeilen[GesamtZeilen-8])
    mailsendmessage.write(zeilen[GesamtZeilen-7])
    mailsendmessage.write(zeilen[GesamtZeilen-6])
    mailsendmessage.write(zeilen[GesamtZeilen-5])
    mailsendmessage.write(zeilen[GesamtZeilen-4])
    mailsendmessage.write(zeilen[GesamtZeilen-3])
    mailsendmessage.write(zeilen[GesamtZeilen-2])
    mailsendmessage.write(zeilen[GesamtZeilen-1])
    mailsendmessage.close()

###########################################################################
def writeHtml(daten):
    HTMLFILE = 'Wetter.html'
    f = open(HTMLFILE, 'a')
    
    table_data = [

        [daten["Datum"],   daten["Temp" ] + "/" + daten["Taupunkt"], daten["Wind"], daten["Symbol"], daten["Regen"]],
        [daten["Zeit"],   daten["Luftf"],     daten["Windtemp"] + "/" + daten["Windrichtung"],      daten["Luftdruck"],  daten["Wolkengroesse"] + "/" + daten["Wolkenanzahl"]],
    ]
    htmlcode = HTML.table(table_data,
        header_row=['Datum', 'Temp. /Luftf.', 'Winddaten', 'Wetterveraenderung/Luftdruck', 'Regen/Wolken'])
    f.write(htmlcode)
    f.write('<p>')
    f.close

########## MAIN ###############################################################
#print("Wetterprogramm von JonasT")

programminfo()
daten = inputData()


readFromFile()
writeHtml(wetterdaten)
sendmail()


print("fertig")
Zuletzt geändert von jtschoch am Mittwoch 25. Mai 2011, 14:08, insgesamt 2-mal geändert.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
busfahrer
User
Beiträge: 111
Registriert: Donnerstag 9. Oktober 2008, 17:42

Hallo
dann schau dir doch mal an welchen Parameter du in deinem Programm bei ''writeHtml'' übergibst und welchen in deiner Shell Version :wink:

Gruß...busfahrer
Alles wird gut ;-)
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Ja, das habe ich jetzt hingekommen, aber schon treten die nächsten Fehler auf:

http://paste.pocoo.org/show/394854/

Also da wo das ? steht soll das Fenster geschlossen werden und das Programm (Hintergrundprozess) soll weiter laufen.
Dann soll noch das Passwort abgefragt werden.

Bitte Helft mir!!!

Danke im voraus!
Zuletzt geändert von jtschoch am Mittwoch 25. Mai 2011, 14:06, insgesamt 1-mal geändert.
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Bitte poste so langen Code doch bitte mal in einem separaten Paste-bin; entweder das hier im Forum oder bspw. auf paste.pocoo.org.

Das ist doch wohl nicht Dein Ernst:

Code: Alles auswählen

mailsendmessage.write(zeilen[GesamtZeilen-23])
    mailsendmessage.write(zeilen[GesamtZeilen-22])
    mailsendmessage.write(zeilen[GesamtZeilen-21])
    mailsendmessage.write(zeilen[GesamtZeilen-20])
    mailsendmessage.write(zeilen[GesamtZeilen-19])
    mailsendmessage.write(zeilen[GesamtZeilen-18])
    mailsendmessage.write(zeilen[GesamtZeilen-17])
    mailsendmessage.write(zeilen[GesamtZeilen-16])
    mailsendmessage.write(zeilen[GesamtZeilen-15])
    mailsendmessage.write(zeilen[GesamtZeilen-14])
    mailsendmessage.write(zeilen[GesamtZeilen-13])
    mailsendmessage.write(zeilen[GesamtZeilen-12])
    mailsendmessage.write(zeilen[GesamtZeilen-11])
    mailsendmessage.write(zeilen[GesamtZeilen-10])
    mailsendmessage.write(zeilen[GesamtZeilen-9])
    mailsendmessage.write(zeilen[GesamtZeilen-8])
    mailsendmessage.write(zeilen[GesamtZeilen-7])
    mailsendmessage.write(zeilen[GesamtZeilen-6])
    mailsendmessage.write(zeilen[GesamtZeilen-5])
    mailsendmessage.write(zeilen[GesamtZeilen-4])
    mailsendmessage.write(zeilen[GesamtZeilen-3])
    mailsendmessage.write(zeilen[GesamtZeilen-2])
    mailsendmessage.write(zeilen[GesamtZeilen-1])
OMG :shock:

Bitte arbeite noch mal das Tutorial durch, bevor Du Dich an solch komplexe Programme (inkl. GUI) setzt. Diese "copy and paste"-Programmierung - und das auf einer der elementaren Datenstruktur - zeigt einfach, dass Du noch nicht so weit bist, solche Probleme anzugehen.

Edit: Die Zeilenumbrüche sind total kaputt. Somit kann man Dein Script nicht mal ausführen. Was ist das "HTML"-Modul? Wozu braucht man denn da root-Rechte? Du meinst das "?" in Zeile 440?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Das Funktioniert aber!!!
Das ist der aftuelle eintrag den eine MAil sendet
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Also das Html modul:
http://www.decalage.info/en/python/html
damit wird so eine Tabele erstellt:
http://paste.pocoo.org/show/394861/


</TABLE><p><TABLE cellpadding="4" style="border: 1px solid #000000; border-collapse: collapse;" border="1">
<TR>
<TH>Datum</TH>
<TH>Temp. /Luftf.</TH>
<TH>Winddaten</TH>
<TH>Wetterveraenderung/Luftdruck</TH>
<TH>Regen/Wolken</TH>
</TR>
<TR>
<TD>Wed 05/25/11</TD>
<TD>5.1°C/1.5C</TD>
<TD>5km/h</TD>
<TD>Sonnig mit Wolken</TD>
<TD>0.0mm</TD>
</TR>
<TR>
<TD>14:54:33 </TD>
<TD>17%</TD>
<TD>W/5°C</TD>
<TD>1016hPa</TD>
<TD>mittel/mittel</TD>
</TR>
</TABLE><p>


Also da wo das ? steht soll das Fenster geschlossen werden und das Programm (Hintergrundprozess) soll weiter laufen.
Dann soll noch das Passwort abgefragt werden.

darauf beziht sich meine Frage!
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Antworten