是否可以制作一个 python 脚本,在 Windows 中执行(自删除)结束时删除 .py 文件?
问问题
28035 次
6 回答
26
这种方式使您的程序不依赖于操作系统。
from os import remove
from sys import argv
remove(argv[0])
加分项:解析参数时,您在 sys.argv 中获得的第一个参数等于“ path-to-filename/filename.py ”
于 2013-12-11T23:49:02.577 回答
10
Neomind 的回答似乎可以解决问题。但是,如果在内存中删除文件让您感到困扰,并且您正在寻找一个纯 Python 解决方案,那么您可以使用 subprocess 创建一个新进程,其明确目的是删除您的原始脚本文件。像这样的东西应该工作:
import sys, subprocess
subprocess.Popen("python -c \"import os, time; time.sleep(1); os.remove('{}');\"".format(sys.argv[0]))
sys.exit(0)
您可能不需要超时,但我添加它只是为了确保原始脚本中的进程有足够的时间自行关闭。
于 2015-04-10T19:49:51.500 回答
6
我不确定在内存中删除文件是否是个好主意。尝试从关闭脚本进程的脚本运行批处理文件,然后删除脚本文件。
可能有一种自毁脚本的本机方法,但我不知道。
编辑:这是一个简单的示例,说明如何使用我描述的方法完成此操作:
在脚本中
# 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"
您甚至可能不需要终止进程来删除文件,但这样做更安全。希望这可以帮助。
于 2012-04-11T19:30:29.017 回答
2
是的,您可以使用以下内容:
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])
这个脚本当然可以修改,但除此之外应该可以
于 2018-01-19T21:30:37.473 回答
2
有一个比较简单的方法:
import os
os.remove("insert the file's path")
如果您遇到问题,请在起始引号之前放置一个“r”。
于 2017-04-19T10:49:46.687 回答
1
您也可以使用该atexit
模块。
import os, atexit
atexit.register(lambda file = __file__: os.remove(file))
于 2021-04-30T13:39:09.367 回答