os.read() verwirrt mich - TypeError: an integer is required

import popen2 import os pipe = popen2.Popen4('cat file') pipe.fromchild <open file '<fdopen>', mode 'r' at 0x401df860> data = os.read(pipe.fromchild, 80) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: an integer is required
Das verstehe ich nicht. Was läuft da verkehrt, denn zu os.read heißt es in der Dokumentation[1]: "... Note: this function is intended for low-level I/O and must be applied to a file descriptor as returned by open() or pipe(). To read a ``file object'' returned by the built-in function open() or by popen() or fdopen(), or sys.stdin, use its read() or readline() methods." und das sind auch File-Objekte:
file = open('file') file file <open file 'file', mode 'r' at 0x401dfae0>
Kann mir jemand meinen Denkfehler erklären? [1] http://www.python.org/doc/current/lib/os-fd-ops.html -- Kai Weber » kai.weber@glorybox.de http://www.glorybox.de GPG-Key: 0x594D4132 _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

Hallo! On 28 Jan 2004 at 22:21, Kai Weber wrote:
"... Note: this function is intended for low-level I/O and must be applied to a file descriptor as returned by open() or pipe(). To read a ``file object'' returned by the built-in function open() or by popen() or fdopen(), or sys.stdin, use its read() or readline() methods."
Kann mir jemand meinen Denkfehler erklären?
Wohl eher ein Übersetzungsproblem. os.read() erwartet einen "File Descriptor" (ein Integer) als erstes Argument. So einen Descriptor liefert u.a. os.open() oder os.pipe(). "File Objects" dagegen werden durch zum Beispiel die built-in-Funktionen open() oder file() erzeugt, oder eben durch Popen4() in Form der Attribute fromchild und tochild. Und lesend greift man auf ein "File Object" mit z.B. den Methoden read und readlines() zu. Jan _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de

* Jan Voges <jan.voges@gmx.de>:
Kann mir jemand meinen Denkfehler erklären?
Wohl eher ein Übersetzungsproblem. os.read() erwartet einen "File Descriptor" (ein Integer) als erstes Argument. So einen Descriptor liefert u.a. os.open() oder os.pipe(). [...]
Danke für's Erleuchten. Ich habe ständig die Unterscheidung in "object" und "descriptor" überlesen. -- Kai Weber » kai.weber@glorybox.de http://www.glorybox.de GPG-Key: 0x594D4132 _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
participants (2)
-
Jan Voges
-
Kai Weber