
[Alex Martelli]
cStringIO -- I've noticed most newbies find it more natural to "write to a cStringIO.StringIO pseudofile as they go" then getvalue, rather than append'ing to a list of strings then ''.join .
I do not doubt that cStringIO is useful to know, and a tutorial could throw a short glimpse here about why the `c' prefix and speed issues. For a newcomer, here might be a good opportunity for illustrating one surprising capability of Python for those coming from other languages, which is using bound methods as "first-class" objects. Like: fragments = [] write = fragments.append ... <code using `write' above> ... result = ''.join(fragments) I think this approach is not much more difficult than `StringIO', not so bad efficiency-wise, but likely more fruitful about developing Python useful understanding and abilities. A tutorial might also show that the said `write' could be given and received in functions, which do not have to "know" if they are writing to a file, or in-memory fragments. -- François Pinard http://www.iro.umontreal.ca/~pinard