diff options
Diffstat (limited to 'numpy/compat/py3k.py')
-rw-r--r-- | numpy/compat/py3k.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/numpy/compat/py3k.py b/numpy/compat/py3k.py index 3d10bb988..d02c9f8fe 100644 --- a/numpy/compat/py3k.py +++ b/numpy/compat/py3k.py @@ -47,7 +47,15 @@ def asstr(s): return str(s) def isfileobj(f): - return isinstance(f, (io.FileIO, io.BufferedReader, io.BufferedWriter)) + if not isinstance(f, (io.FileIO, io.BufferedReader, io.BufferedWriter)): + return False + try: + # BufferedReader/Writer may raise OSError when + # fetching `fileno()` (e.g. when wrapping BytesIO). + f.fileno() + return True + except OSError: + return False def open_latin1(filename, mode='r'): return open(filename, mode=mode, encoding='iso-8859-1') |