readinto()/memoryview() based variant of copyfileobj(). *fsrc* must support readinto() method and both files must be open in binary mode.
(fsrc, fdst, length=COPY_BUFSIZE)
| 227 | offset += sent |
| 228 | |
| 229 | def _copyfileobj_readinto(fsrc, fdst, length=COPY_BUFSIZE): |
| 230 | """readinto()/memoryview() based variant of copyfileobj(). |
| 231 | *fsrc* must support readinto() method and both files must be |
| 232 | open in binary mode. |
| 233 | """ |
| 234 | # Localize variable access to minimize overhead. |
| 235 | fsrc_readinto = fsrc.readinto |
| 236 | fdst_write = fdst.write |
| 237 | with memoryview(bytearray(length)) as mv: |
| 238 | while True: |
| 239 | n = fsrc_readinto(mv) |
| 240 | if not n: |
| 241 | break |
| 242 | elif n < length: |
| 243 | with mv[:n] as smv: |
| 244 | fdst_write(smv) |
| 245 | break |
| 246 | else: |
| 247 | fdst_write(mv) |
| 248 | |
| 249 | def copyfileobj(fsrc, fdst, length=0): |
| 250 | """copy data from file-like object fsrc to file-like object fdst""" |
no outgoing calls
no test coverage detected
searching dependent graphs…