In one of my scripts, I need to delete a file that could be in use at the time. I know that I can't remove the file that is in use until it isn't anymore, but I also know that I can mark the file for removal by the Operating System (Windows XP). How would I do this in Python?
+1
A:
Use the MoveFileEx
function:
If dwFlags specifies MOVEFILE_DELAY_UNTIL_REBOOT and lpNewFileName is NULL, MoveFileEx registers the lpExistingFileName file to be deleted when the system restarts. If lpExistingFileName refers to a directory, the system removes the directory at restart only if the directory is empty.
Greg Hewgill
2010-10-19 00:09:47
+3
A:
import win32file
import win32api
win32file.MoveFileEx("/path/to/lockedfile.ext", None ,
win32file.MOVEFILE_DELAY_UNTIL_REBOOT)
Paulo Scardine
2010-10-19 00:12:43
Thanks! Who knew that this would be so easy! You saved my entire application, @Paulo Scardine!
Zachary Brown
2010-10-19 00:21:25
+3
A:
...and another version which doesn't depend on pywin32 binaries.
import ctypes
MOVEFILE_DELAY_UNTIL_REBOOT = 4
ctypes.windll.kernel32.MoveFileExA("/path/to/lockedfile.ext", None,
MOVEFILE_DELAY_UNTIL_REBOOT)
lunixbochs
2010-10-19 00:24:45