How to find a file or a device is currently used by which processor which program ?

Tim Golden tim.golden at
Wed Oct 11 11:27:12 CEST 2006

[fdu.xiaojf at]

| When I want to uninstall my usb disk on windows, the 
| operating systems 
| sometimes tells me the device is being used by other program. But I 
| can't find which program is using it. Can I do this using python ?

This is really one of those questions that could better
be rephrased: can I do this *without* using Python? By
which I mean: there's nothing built into Python or its
standard libraries which will determine which open program
is holding which files open on your filesystem. I'm quite
certain there exists some more or less brute-force 
technique for this in Windows in general, but you'd really
have to find that, and then determine how to do it in

(Bit of Googling later...)
I suggest you look at the Handle util from
(always a good place to start looking for these kind of

You can run it against a directory or a specific file
and its output it fairly parseable. Example, where I
have a python process holding open a "temp.tmp" file
my c:\temp directory:

C:\>handle c:\temp

Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals -

cmd.exe            pid: 4260      C: C:\temp
python.exe         pid: 5296     58: C:\temp\temp.tmp
cmd.exe            pid: 5232     94: C:\temp
python.exe         pid: 2672     94: C:\temp


You could use the subprocess module (or its predecessors) to
scan the output fairly easily, I imagine. What you with the 
process name / id is up to your needs, of course :)


This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:

More information about the Python-list mailing list