从Python中将文件标记为删除?

4

在我的一个脚本中,我需要删除一个可能正在使用的文件。我知道只有在文件不再被使用时才能删除它,但我也知道可以向操作系统(Windows XP)标记该文件以进行删除。我应该如何在Python中实现这个功能?


1
在任何其他编程语言中都可以使用相同的方式。 - Ignacio Vazquez-Abrams
1
好的,那应该怎么做呢?我不会用很多其他编程语言,也不知道如何在我使用的语言中实现这个。您能否详细说明一下? - Zac Brown
1
在Linux上,即使文件正在使用中,您也可以删除它。使用该文件的进程将保持文件句柄打开状态,直到它们退出,因此从这个意义上说,它是可恢复的。Windows的处理方式不同。 - Daenyth
哪个操作系统?由于Windows和Linux是不同的,回答这个问题需要考虑哪一个操作系统。 - S.Lott
3个回答

7

还有另一个版本,不依赖于pywin32二进制文件。

import ctypes
MOVEFILE_DELAY_UNTIL_REBOOT = 4

ctypes.windll.kernel32.MoveFileExA("/path/to/lockedfile.ext", None,
                                       MOVEFILE_DELAY_UNTIL_REBOOT)

5
import win32file
import win32api
win32file.MoveFileEx("/path/to/lockedfile.ext", None ,
                 win32file.MOVEFILE_DELAY_UNTIL_REBOOT)

谢谢!谁知道这会是如此简单!@Paulo Scardine,你救了我的整个应用程序! - Zac Brown

1

使用MoveFileEx函数:

如果dwFlags指定MOVEFILE_DELAY_UNTIL_REBOOT并且lpNewFileName为NULL,则MoveFileEx会在系统重新启动时注册要删除的lpExistingFileName文件。如果lpExistingFileName引用目录,则仅当目录为空时,系统才会在重新启动时删除该目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接