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
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
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!