Fehler bei Variablen die nicht verwendet werden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
alexmitalfa
User
Beiträge: 2
Registriert: Freitag 27. Juli 2007, 18:49

Hallo *,

ich habe ein ganz kleines Programm mit einer äußerst merkwürdigen Fehlermeldung.

Programm:

Code: Alles auswählen

from BeautifulSoup import BeautifulSoup
import re, urllib

remote_file =open('d:\go.shtml','r')
html = remote_file.read()
remote_file.close

crt_extract(html)

def crt_extract(content):
    soup = BeautifulSoup(content)

-----------------------------------------------
Fehler:

Traceback (most recent call last):
File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "C:\software\diveintopython-5.4\py\bobtest6.py", line 8, in <module>
crt_extract(html)
File "C:\software\diveintopython-5.4\py\bobtest5.py", line 55, in crt_extract
NameError: global name 'res_forum' is not defined
>>>


Warum bekomme ich einen Fehler für eine Variable, die ich in dieser Version des Programms nicht verwende?
Initialisiert sich der Interpreter nicht neu? Oder wo könnte das Problem liegen?

Danke für Eure Hilfe,
Grüße, Alex

Edit by gerold: Code in Code-Tags gestellt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alexmitalfa hat geschrieben:

Code: Alles auswählen

from BeautifulSoup import BeautifulSoup
import re, urllib

remote_file =open('d:\go.shtml','r')
html = remote_file.read()
remote_file.close

crt_extract(html)

def crt_extract(content):
    soup = BeautifulSoup(content)
Hallo Alex!

Willkommen im Python-Forum!

``remote_file.close`` ist eine Funktion und muss so aufgerufen werden: ``remote_file.close()``

Du rufst ``crt_extract(html)`` auf, bevor du diese Funktion definiert hast. In Zeile 8 weiß Python noch nichts von der Funktion ``crt_extract``, die du erst zwei Zeilen darunter erstellst.

Später wird dein Programm sowiso wie unten aussehen. Dann können solche Fehler kaum mehr auftreten. ;-)

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

from BeautifulSoup import BeautifulSoup
import re
import urllib


def crt_extract(content):
    soup = BeautifulSoup(content)
    # ...


def main():
    remote_file = open('d:\\go.shtml','r') # doppelter Backslash
    html = remote_file.read()
    remote_file.close()
    
    crt_extract(html)


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alexmitalfa
User
Beiträge: 2
Registriert: Freitag 27. Juli 2007, 18:49

oh danke.

das ist ja toll.
funktioniert gleich viel besser.

habe zwar den ganzen tag python recherchiert, aber das war wohl nicht dabei..

vielen vielen dank!
grüße, alex
Antworten