August 2018
Intermediate to advanced
366 pages
10h 14m
English
tempfile.SpooledTemporaryFile has an internal _file property that keeps the real data stored in a BytesIO store until it can fit in memory, and then moves it to a real file once it gets bigger than max_size.
You can easily see this behavior by printing the value of _file while you are writing data:
>>> with tempfile.SpooledTemporaryFile(max_size=30) as temp: ... for i in range(3): ... temp.write(b'Line of text\n') ... print(temp._file) ... <_io.BytesIO object at 0x10d539ca8> <_io.BytesIO object at 0x10d539ca8> <_io.BufferedRandom name=4>