Do I have to do StringIO.close()?

前端 未结 4 1294
旧时难觅i
旧时难觅i 2021-02-05 01:45

Some code:

import cStringIO

def f():
    buffer = cStringIO.StringIO()
    buffer.write(\'something\')
    return buffer.getvalue()

The docume

4条回答
  •  天命终不由人
    2021-02-05 02:27

    Generally it's still better to call close() or use the with statement, because there may be some unexpected behaviour in special circumstances. For example, the expat-IncrementalParser seems to expect a file to be closed, or it won't return the last tidbit of parsed xml until a timeout occurs in some rare circumstances.

    But for the with-statement, which handles the closing for you, you have to use the StringIO class from the io-Modules, as stated in the comment of Ivc.

    This was a major headache in some legacy sax-parser script we solved by closing the StringIO manually.

    The "out-of-scope" close didn't work. It just waited for the timeout-limit.

提交回复
热议问题