[Python-Dev] Placement of os.fdopen functionality (original) (raw)
Oren Tirosh oren-py-d@hishome.net
Mon, 7 Apr 2003 02:16:30 -0400
- Previous message: [Python-Dev] Placement of os.fdopen functionality
- Next message: [Python-Dev] Placement of os.fdopen functionality
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sat, Apr 05, 2003 at 02:35:31PM -0500, Jp Calderone wrote:
It occurred to me this afternoon (after answering aquestion about creating file objects from file descriptors) that perhaps os.fdopen would be more logically placed someplace else - of course it could also remain as os.fdopen() for whatever deprecation period is warrented.
Perhaps as a class method of the file type, file.fromfd()?
I don't see much point in moving it around just because the place doesn't seem right but the fact that it's a function rather than a method means that some things cannot be done in pure Python.
I can create an uninitialized instance of a subclass of 'file' using file.new(filesubclass) but the only way to open it is by name using file.init(filesubclassinstance, 'filename'). A file subclass cannot be opened from a file descriptor because fdopen always returns a new instance of 'file'.
If there was some way to open an uninitialized file object from a file descriptor it would be possible, for example, to write a version of popen that returns a subclass of file. It could add a method for retrieving the exit code of the process, do something interesting on del, etc.
Here are some alternatives of where this could be implemented, followed by what a Python implementation of os.fdopen would look like:
New form of file.new with more arguments:
def fdopen(fd, mode='r', buffering=-1): return file.new('(fdopen)', mode, buffering, fd)
Optional argument to file.init:
def fdopen(fd, mode='r', buffering=-1): return file('(fdopen)', mode, buffering, fd)
Instance method (NOT a class method):
def fdopen(fd, mode='r', buffering=-1): f = file.new() f.fdopen(fd, mode, buffering, '(fdopen)') return f Oren
- Previous message: [Python-Dev] Placement of os.fdopen functionality
- Next message: [Python-Dev] Placement of os.fdopen functionality
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]