是否有可能制作一个python脚本,在Windows执行结束时删除.py文件(自行删除)?
答案 0 :(得分:11)
这种方式使您的程序不依赖于操作系统。
from os import remove
from sys import argv
remove(argv[0])
奖励积分: 在解析参数时,您在sys.argv中获得的第一个参数等于“ path-to-filename / filename.py ”
答案 1 :(得分:6)
Neomind的回答似乎可以解决问题。但是如果在内存中删除文件困扰你,并且你正在寻找一个纯python解决方案,那么你可以使用子进程来创建一个新进程,其目的是删除原始脚本文件。这样的事情应该有效:
import sys, subprocess
subprocess.Popen("python -c \"import os, time; time.sleep(1); os.remove('{}');\"".format(sys.argv[0]))
sys.exit(0)
你可能不会在那里需要超时但是我已经添加它只是为了确保原始脚本中的进程有足够的时间来关闭它。
答案 2 :(得分:4)
我不确定在内存中删除文件是个好主意。尝试从关闭脚本进程的脚本运行批处理文件,然后删除脚本文件。
可能有一种自我毁坏脚本的本机方法,但我不知道它。
编辑:这是一个简单的例子,说明如何使用我描述的方法完成此任务:
在剧本中
# C:\test.py
import os
os.startfile(r"C:\sampleBatch.bat")
批次
# C:\sampleBatch.bat
TASKKILL /IM "process name" #For me, this was "ipy64.exe" because I use IronPython.
DEL "C:\test.py"
您甚至可能不需要删除删除文件的过程,但这样做更安全。希望这会有所帮助。
答案 3 :(得分:1)
有一个相当简单的方法:
import os
os.remove("insert the file's path")
如果您遇到问题,请放置一个' r'在起始引号之前标记。
答案 4 :(得分:1)
是的,您可以使用以下内容:
import os
import sys
import subprocess
# execute and remove after run
(Your python code)
# end of file
dir = os.getcwd()
os.remove(dir+'\%s' % sys.argv[0])
当然可以修改此脚本,但除此之外,这应该可以使用
答案 5 :(得分:0)
您也可以使用 atexit
模块。
import os, atexit
atexit.register(lambda file = __file__: os.remove(file))