Message165779
The following example uses make_parser / parse to read a trivial XML document by filename and then attempts to delete the file. On Win32 I can't unlink the file because the parse does not seem to close the file handle.
import os
import tempfile
from xml.sax import make_parser, ContentHandler
(handle, path) = tempfile.mkstemp()
os.write(handle, b"<foo/>")
os.close(handle)
parser = make_parser()
parser.parse(path)
# This unlink fails on win32. It succeeds if I comment out the call to parse.
os.unlink(path)
As I provide a filename rather than a file object, I would expect the parse call to both open and close it. I can't see a way to do the clean-up myself.
This issue exists in Python 2.7.3 but I could not reproduce it in 3.2.3.
Windows cmd transcript:
c:\Users\mth>Python2.7.3\python.exe fileleak.py
Traceback (most recent call last):
File "fileleak.py", line 14, in <module>
os.unlink(path)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'c:\\d\\tmpvyqg2c'
c:\Users\mth>Python3.2.3\python.exe fileleak.py
c:\Users\mth> |
|
Date |
User |
Action |
Args |
2012-07-18 14:17:30 | mth | set | recipients:
+ mth |
2012-07-18 14:17:30 | mth | set | messageid: <1342621050.08.0.170764357594.issue15388@psf.upfronthosting.co.za> |
2012-07-18 14:17:29 | mth | link | issue15388 messages |
2012-07-18 14:17:28 | mth | create | |
|