Read exactly *n* bytes from `fp` This method is required because fp may be unbuffered, i.e. return short reads.
(fp, n)
| 400 | |
| 401 | |
| 402 | def _read_exact(fp, n): |
| 403 | '''Read exactly *n* bytes from `fp` |
| 404 | |
| 405 | This method is required because fp may be unbuffered, |
| 406 | i.e. return short reads. |
| 407 | ''' |
| 408 | data = fp.read(n) |
| 409 | while len(data) < n: |
| 410 | b = fp.read(n - len(data)) |
| 411 | if not b: |
| 412 | raise EOFError("Compressed file ended before the " |
| 413 | "end-of-stream marker was reached") |
| 414 | data += b |
| 415 | return data |
| 416 | |
| 417 | |
| 418 | def _read_gzip_header(fp): |
no test coverage detected