Seite 1 von 1

Anfängerproblem: open() geht nicht

Verfasst: Montag 22. Oktober 2007, 08:57
von TheRealBachelor
Hallo,

bin relativ neu in der python-materie. Ich habe in meinem Praktikum die Aufgabe bekommen eine kleine Webapplikation zu schreiben. Klappt bis jetzt gut und python gefällt mir von tag zu tag mehr :)

Jetzt habe ich nur ein Problem, dass ich mir überhaupt nicht erklären kann. Ich will eine Datei öffnen und da gibt er mir immer einen Fehler zurück (siehe code weiter unten). Das kuriose dabei ist, dass es bisher an anderen stellen wo ich es genauso gemacht habe geklappt hat. Der Pfad zur Datei stimmt 100% und auch der Rest sollte stimmen. Achso ja... Die Datei die es zu öffnen gilt hat keine file-extension. Daran liegt aber auch nicht, da ich diese mal in eine txt umbenannt hatte und es dann auch nicht geklappt hatte.

Also hier erstmal mein Fehlercode:
C:\xampp\cgi-bin\urlaub\index.cgi
36 password = str(fs.getvalue("password"))
37 from content import login
38 print login.logging_in(ADMIN_PASS, username, password)
39
40 elif session_id in sess_list:
login = <module 'content.login' from 'C:\xampp\cgi-bin\urlaub\content\login.pyc'>, login.logging_in = <function logging_in>, ADMIN_PASS = 'xxx', username = 'xxx', password = 'xxx'
C:\xampp\cgi-bin\urlaub\content\login.py in logging_in(admin_pass='xxx', username='xxx', password='xxx')
27 output = 'Sie haben ein falsches Passwort eingegeben!'
28 else:
29 shadow_open = open('./users/shadow', 'r')
30 shadow_file = shadow_open.readlines()
31 shadow_file_count = shadow_file.count()
shadow_open undefined, open = <built-in function open>

TypeError: an integer is required
args = ('an integer is required',)
Seht ihr den Fehler? Ich werde daraus einfach nicht schlau.

Vielen Dank vorab für eure Antworten!

Verfasst: Montag 22. Oktober 2007, 09:09
von Rebecca
Die Fehlermeldung finde ich merkwuerdig, aber der count-Aufruf ist nicht richtig, der erwartet einen Parameter. Wahrscheinlich meinst du eher len(shadow_open)?

Ansonsten musst du dran denken, dass cgi-Prozesse auf *nix-servern gerne unter dem User nobody laufen, und man somit auf viele Dateien wg. fehlender Rechte nicht zugreifen kann.

Verfasst: Montag 22. Oktober 2007, 09:11
von BlackJack
Ist `open()` wirklich das `open()` aus `__builtins__`? Bei `os.open()` bekommt man zum Beispiel diese Ausnahme:

Code: Alles auswählen

In [556]: os.open('test.py', 'r')
---------------------------------------------------------------------------
<type 'exceptions.TypeError'>             Traceback (most recent call last)

/home/bj/<ipython console> in <module>()

<type 'exceptions.TypeError'>: an integer is required

Verfasst: Montag 22. Oktober 2007, 09:15
von Rebecca
Oh, guter Tipp. Boese *-importe?

Verfasst: Montag 22. Oktober 2007, 09:40
von TheRealBachelor
vielen dank! ja es lag an meinem from os import *

nun noch eine frage zum count()... da ich ja mit readlines() eine liste aller zeilen erstelle, möchte ich anschließend wissen wieviele elemente/zeilen in dieser liste sind.

Welchen parameter benötigt denn count()?
Return the number of occurrences of x in the array.
??? Verstehe ich überhaupt nicht was er da für ein x haben will.

Ist count() üerhaupt das richtige dafür?

Verfasst: Montag 22. Oktober 2007, 09:43
von Rebecca
Rebecca hat geschrieben:Wahrscheinlich meinst du eher len(shadow_open)?
count zaehlt, wie haeufig ein Element in einer Liste vorkommt.