是否可以制作一个python脚本,在Windows中执行(自删除)结束时删除.py文件?
这种方式使您的程序不依赖于操作系统。
from os import remove
from sys import argv
remove(argv[0])
积分:解析参数时,在 sys.argv 中得到的第一个参数等于"文件名/文件名的路径.py"
Neomind的回答似乎可以解决问题。 但是,如果在文件在内存中时删除文件困扰您,并且您正在寻找纯python解决方案,那么您可以使用子进程创建一个新进程,其明确目的是删除原始脚本文件。 这样的事情应该有效:
import sys, subprocess
subprocess.Popen("python -c "import os, time; time.sleep(1); os.remove('{}');"".format(sys.argv[0]))
sys.exit(0)
您可能不需要超时,但我添加它只是为了确保原始脚本中的进程有足够的时间来关闭自身。
我不确定在内存中删除文件是个好主意。尝试从脚本运行批处理文件,这将关闭脚本进程,然后删除脚本文件。
可能有一种本机方法可以自毁脚本,但我不知道。
编辑:这是一个如何使用我描述的方法完成此操作的简单示例:
在脚本中
# 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"
您甚至可能不需要终止删除文件的进程,但这样做更安全。希望这有帮助。
是的,您可以使用以下内容:
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])
这个脚本当然可以修改,但除此之外,这应该可以工作
您也可以使用 atexit
模块。
import os, atexit
atexit.register(lambda file = __file__: os.remove(file))
有一个相当简单的方法:
import os
os.remove("insert the file's path")
如果遇到问题,请在开始引号前加上"r"。