Antoine Pitrou <pit...@free.fr> added the comment:

os.fstat wouldn't work since it succeeds with non-"regular" files, e.g. 
standard I/O:

>>> os.fstat(0)
posix.stat_result(st_mode=8592, st_ino=5, st_dev=11, st_nlink=1, st_uid=500, 
st_gid=5, st_size=0, st_atime=1323629303, st_mtime=1323629303, 
st_ctime=1323628616)

I think the best solution is to call sendfile() and catch OSError, then 
fallback on the generic loop. However, you must also guard against fileno() 
failing:

>>> io.BytesIO().fileno()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
io.UnsupportedOperation: fileno

----------
nosy: +pitrou

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13564>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to