鱼C论坛

 找回密码
 立即注册
查看: 3777|回复: 10

[已解决]请问.exe或者.py的程序怎么在运行结束后删除自身呢

[复制链接]
发表于 2020-12-1 15:27:39 | 显示全部楼层 |阅读模式
60鱼币
本帖最后由 v.ki 于 2020-12-1 16:40 编辑

要求可产生临时文件,但是所有程序运行后电脑上无新增加的文件或程序


知道怎么办了
知道怎么办了,创建一个.bat文件可以删除.exe或者.py 然后再del %0删除自身
最佳答案
2020-12-1 15:27:40
本帖最后由 suchocolate 于 2020-12-1 15:39 编辑

python写个脚本test.py在IDLE里运行一下就知道了。
import os

print('开始删除...')
os.remove('test.py')
print('删除完成')

最佳答案

查看完整内容

python写个脚本test.py在IDLE里运行一下就知道了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 15:27:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2020-12-1 15:39 编辑

python写个脚本test.py在IDLE里运行一下就知道了。
import os

print('开始删除...')
os.remove('test.py')
print('删除完成')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 15:51:56 | 显示全部楼层
suchocolate 发表于 2020-12-1 15:37
python写个脚本test.py在IDLE里运行一下就知道了。

感谢,我印象中os操作已经打开的文件会报错,这个方法我想都没想,没想到居然可以,而且会执行删除成功这句话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 15:53:48 | 显示全部楼层
suchocolate 发表于 2020-12-1 15:27
python写个脚本test.py在IDLE里运行一下就知道了。

这么推理下去你说我改成remove(test.exe)然后打包一下再执行会不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 16:00:43 | 显示全部楼层
v.ki 发表于 2020-12-1 15:51
感谢,我印象中os操作已经打开的文件会报错,这个方法我想都没想,没想到居然可以,而且会执行删除成功这 ...

程序执行前,系统回会将脚本读取到内存中,程序在内存中运行,脚本后续也没有调用其他文件,所以删除磁盘上的文件是没有问题的。
不过如果是删除已经打开的文件,这个还是得先关闭,在删除,打开的文件算正在调用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 16:13:25 | 显示全部楼层
suchocolate 发表于 2020-12-1 16:00
程序执行前,系统回会将脚本读取到内存中,程序在内存中运行,脚本后续也没有调用其他文件,所以删除磁盘 ...

okok我刚才打包了一下用类似的思路,为什么我有sysytem的权限了有所有的执行权还会报错
开始删除...
[WinError 5] 拒绝访问。: '2.exe'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 16:22:51 | 显示全部楼层
v.ki 发表于 2020-12-1 15:53
这么推理下去你说我改成remove(test.exe)然后打包一下再执行会不会报错

我刚刚试了试,转成exe的话os.remove只能删除其他文件,删除不了自身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-1 16:31:20 From FishC Mobile | 显示全部楼层
v.ki 发表于 2020-12-1 16:13
okok我刚才打包了一下用类似的思路,为什么我有sysytem的权限了有所有的执行权还会报错
开始删除...
[W ...

exe和py文件的运行机制不一样的,py的运行是有由解释器python.exe读取.py的内容到内存解释执行,读取完就关闭文件了,所以可以删.py,正在运行的是python.exe。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
v.ki + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 16:32:06 | 显示全部楼层
suchocolate 发表于 2020-12-1 16:22
我刚刚试了试,转成exe的话os.remove只能删除其他文件,删除不了自身。

我想是不是因为exe就是一个单独程序,而py的话你删除的只是代码文件,真正执行的python3还是被装在机器上,而那些代码已经被写入,.py文件只是一个临时的载体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 16:32:57 | 显示全部楼层
hrp 发表于 2020-12-1 16:31
exe和py文件的运行机制不一样的,py的运行是有由解释器python.exe读取.py的内容到内存解释执行,读取完就 ...

对对,正想说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-12-1 16:39:57 | 显示全部楼层
知道怎么办了,创建一个.bat文件可以删除.exe或者.py 然后再del %0删除自身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 05:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表