Seite 1 von 1

Wetterprogramm funktioniert nich!

Verfasst: Freitag 20. Mai 2011, 18:21
von jtschoch
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/

Re: Wetterprogramm funktioniert nich!

Verfasst: Freitag 20. Mai 2011, 18:42
von BlackJack
@jtschoch: Wo definierst Du `daten` denn Deiner Meinung nach!?

Re: Wetterprogramm funktioniert nich!

Verfasst: Freitag 20. Mai 2011, 18:54
von busfahrer
@jtschoch: Deine imports bzgl. Tkinter solltest du dir auch mal anschauen, ich denke einmal importieren reicht normalerweise.

Gruß...busfahrer

Re: Wetterprogramm funktioniert nich!

Verfasst: Freitag 20. Mai 2011, 19:13
von jtschoch
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")

Re: Wetterprogramm funktioniert nich!

Verfasst: Freitag 20. Mai 2011, 19:29
von busfahrer
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

Re: Wetterprogramm funktioniert nicht!

Verfasst: Dienstag 24. Mai 2011, 18:42
von jtschoch
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!

Re: Wetterprogramm funktioniert nich!

Verfasst: Dienstag 24. Mai 2011, 19:47
von Hyperion
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?

Re: Wetterprogramm funktioniert nich!

Verfasst: Mittwoch 25. Mai 2011, 14:01
von jtschoch
Das Funktioniert aber!!!
Das ist der aftuelle eintrag den eine MAil sendet

Re: Wetterprogramm funktioniert nich!

Verfasst: Mittwoch 25. Mai 2011, 14:19
von jtschoch
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!