Chris Angelico writes: > On Fri, Mar 11, 2016 at 5:33 AM, Neal Becker wrote:
>> Is there a way to ensure resource cleanup with a construct such as: >> >> x = load (open ('my file', 'rb)) >> >> Is there a way to ensure this file gets closed? > > Yep! > > def read_file(fn, *a, **kw): > with open(fn, *a, **kw) as f: > return f.read() > > Now you can ensure resource cleanup, because the entire file has been > read in before the function returns. As long as your load() function > is okay with reading from a string, this is effective. Make the string look like a file object to the load function: import io def clopen(fn, mode = 'r', encoding = None): with open(fn, mode = mode, encoding = encoding) as f: ModeIO = io.BytesIO if 'b' in mode else io.StringIO return ModeIO(f.read()) x = load(clopen('my-file', 'rb')) -- https://mail.python.org/mailman/listinfo/python-list