|
import os |
|
def dupfile(f, mode=None, buffering=0, raising=False): |
""" return a new open file object that's a duplicate of f |
|
mode is duplicated if not given, 'buffering' controls |
buffer size (defaulting to no buffering) and 'raising' |
defines whether an exception is raised when an incompatible |
file object is passed in (if raising is False, the file |
object itself will be returned) |
""" |
try: |
fd = f.fileno() |
except AttributeError: |
if raising: |
raise |
return f |
newfd = os.dup(fd) |
mode = mode and mode or f.mode |
return os.fdopen(newfd, mode, buffering) |
|
|