Одним из способов является копание самого объекта generator
, чтобы найти ссылку на экземпляр TextIOWrapper
, возвращаемый open
; этот экземпляр имеет атрибут closed
.
csv_gen.gi_frame.f_locals['.0'].closed
Как только генератор исчерпан, gi_frame
станет None
, после чего файл будет закрыт или нет, зависит от того, TextIOWrapper
был убран мусором.
(Это ужасный способ сделать это, но я потратил 10 минут, копаясь в объекте, поэтому хотел поделиться :))