[Python-Dev] fileobj.read(float): warning or error?

Victor Stinner victor.stinner at haypocalc.com
Mon Jul 21 21:17:14 CEST 2008


Since Python 2.4 (maybe 2.2 or older), fileobj.read(4.2) displays an error and 
works as fileobj.read(4).

>>> i=open('/etc/issue')
>>> i.read(4.2)
__main__:1: DeprecationWarning: integer argument expected, got float

It should raises an error instead of a warning, it has no sense to read a 
partial byte :-) But that should breaks some applications?

Well, the real problem is os.urandom(4.2) which goes to an unlimited loop:

  while len(bytes) < n:
      bytes += read(_urandomfd, n - len(bytes))

because read(0.2) works as read(0) :-/


More information about the Python-Dev mailing list