[New-bugs-announce] [issue6541] SpooledTemporaryFile operates differently to TemporaryFile

Leon Matthews report at bugs.python.org
Wed Jul 22 03:54:23 CEST 2009

New submission from Leon Matthews <leon at lost.co.nz>:

According the docs for the tempfile module, SpooledTemporaryFile()
should operate "exactly as TemporaryFile() does".  However, while
playing around trying to learn the module I found a couple of places
where this is not the case: 

import tempfile

hello = bytes('Hello World!', encoding='utf-8')
tf = tempfile.TemporaryFile()
stf = tempfile.SpooledTemporaryFile()


# (1) Read after write behaviour differs...
>>> print(tf.read())  
b'Hello World'
>>> print(stf.read())

# ...unless you seek first
>>> tf.seek(0)
>>> stf.seek(0)
>>> print(tf.read())
b'Hello World'
>>> print(stf.read())
b'Hello World'

# (2) Name attribute is fragile...
>>> print(tf.name)
AttributeError: '_io.BytesIO' object has no attribute 'name'

# ...until StringIO object replaced
print(stf.name)   # 4

I'm not sure if this should be categorised as a documentation or code
issue. In either case please be gentle -- I'm still just learning Python
(evaluating it as a [now likely] replacement for PHP for web application
development in our company).  I'm filing this bug because, as a
beginner, I was confused by the inconsistency between the docs and the
actual behaviour.

I'd be happy to try and write documentation and/or unit tests about
this, if somebody would be willing to review them for me... :-)

components: Library (Lib)
messages: 90789
nosy: leonov
severity: normal
status: open
title: SpooledTemporaryFile operates differently to TemporaryFile
type: behavior
versions: Python 3.1

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list