merge #11767: use context manager to close file in __getitem__ to prevent FD leak