Message216429
| Author |
orsenthil |
| Recipients |
Arfrever, dfarrell07, ned.deily, orsenthil, python-dev, r.david.murray |
| Date |
2014年04月16日.03:53:01 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1397620382.47.0.0839031714288.issue21069@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
This is turning out be trickier than I ever thought.
fileno() returning b'' is just random error. The underlying issue is, *directly* reading from the fp of the socket() is returning a incomplete output at all times. The correct way to read the output is by using HTTPResponse read() method only it seems.
Here is a small snippet that will fail for every url.
from urllib.request import urlopen
import os
web = "http://www.example.org"
open_url = urlopen(web)
fd = open_url.fileno()
with os.fdopen(fd, 'rb') as f:
file_read_len = len(f.read())
req = urlopen(web)
res_len = len(req.read())
assert file_read_len == res_len |
|