如何在Python编写的.exe文件内部删除另一个.exe文件?

7
我正在尝试创建一个脚本,将github存储库克隆到当前目录,然后删除调用它的脚本。 该脚本是用Python 3.7.4编写的,并编译为.exe。 我尝试使用os.remove(sys.argv[0])在编译前可以工作,但对于我的最终应用程序将不起作用。 我还尝试了几种其他删除方法,但它们都没有起作用,无论是否编译为.exe
import os

def function:
    # code

def main():
    function()
    os.remove(sys.argv[0])

我希望让.exe文件在运行后像.py文件一样自动删除,但我不知道具体实现方法。


2
通常情况下,可执行文件在执行结束之前会被操作系统保持打开状态。在Linux中,您可以从目录中取消链接文件,因此该文件从文件树中消失,但直到进程终止才会实际删除该文件。虽然我不确定Windows是否有类似的行为。据我所知,在进程执行期间,该文件仍然被系统保持打开(且受写保护),因此程序无法删除自身(但我可能是错的)。 - CiaPan
1个回答

6

您可以编写一个批处理文件,在执行后删除Python文件,但我不确定这是否是一个好主意。尽管如此,这是绝对可行的。

C:\test.py:

import os
os.startfile(r"C:\test.bat")

C:\test.bat:

TASKKILL /IM "process name" 
DEL "C:\test.py"

1
更好的是 - bat 文件也可以删除自己。 - Ofer Sadan

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