2011/12/19 Scott Leerssen <sleers...@gmail.com> > >>> I just tried that, and after closing the file object and attempting to > call win32api.ClosHandle() on the value returned by detach, I get an > exception of "error: (6, 'CloseHandle', 'The handle is invalid.')" Here's > what the code looks like: > >>> > >>> h = win32file.CreateFile( > >>> fname, > >>> win32file.GENERIC_READ, > >>> win32file.FILE_SHARE_READ, > >>> None, > >>> win32file.OPEN_EXISTING, > >>> win32file.FILE_FLAG_BACKUP_SEMANTICS, > >>> None > >>> ) > >>> hd = h.Detach() > >>> fd = msvcrt.open_osfhandle(hd, os.O_RDONLY) > >>> f = os.fdopen(fd, 'rb') > >>> f.read() > >>> f.close() > >>> h.Close() > >>> win32file.CloseHandle(hd) >
- h was Detach()ed, so h.Close() is a no-op. - you should not win32file.CloseHandle(hd), the handle now owned by the file object: f.close() called the C function fclose(), which called close(fd) which called CloseHandle. f.close() is enough here! -- Amaury Forgeot d'Arc
_______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32