Как правило, все же лучше вызывать close()
или использовать оператор with
, потому что в особых обстоятельствах может произойти неожиданное поведение. Например, expat- IncrementalParser
, похоже, ожидает, что файл будет закрыт, или он не вернет последний кусочек проанализированного xml, пока в некоторых редких случаях не произойдет тайм-аут.
Но для with
-стата, который обрабатывает закрытие для вас, вы должны использовать класс StringIO
из io
-модулей, как указано в комментарии Ivc.
Это было большой головной болью в некоторых старых скриптах сакс-парсера, которые мы решили, закрыв StringIO вручную.
Закрытие "вне области" не сработало. Он просто ждал ограничения времени ожидания.