python进阶(4):Python 脚本文件重启自身进程

现实环境中,正在运行的 Python 脚本程序需要在内部进行重新启动。这不是简单的关闭程序再运行,需要从程序内部重新运行该程序。

1 内部重启

这时可以使用 os.execv() 方法重新启动 Python 脚本。os.execv(path, args) 函数通过替换进程来执行新程序。

import os
import sys

def restart():
    print('重启程序……')

    os.execv(sys.executable, ['python'] + sys.argv)

restart()

效果如下:

注意:在pycharm中只会执行一次,使用命令行测试。

示例中使用 os.execv() 方法重新启动 Python 脚本。

sys.executable 属性返回一个字符串,该字符串存储当前脚本文件的绝对路径。

sys.argv 属性返回一个列表,其中包含传递给 Python 脚本的参数。列表中的第一项是脚本文件的名称。

打印如下图:

换句话说,os.execv 执行的命令是“python 脚本文件名”。

2 脚本程序异常后重新启动

假设有一个名为 test.py 的简单脚本,想永远运行它。现在脚本文件会在 6 秒钟后停止并抛出错误。

import time
print("运行中......")
time.sleep(6)
raise Exception("程序出错.....")

在同一目录中建立用于重启的脚本,我这边命名restarttest.py:

from subprocess import Popen
import sys
filename = "test.py"
while True:
    print("\n启动 " + filename)
    p = Popen("python " + filename, shell=True)
    p.wait()

启动restarttest.py,输出结果如下:

以上示例使用了 subprocess 模块,将 python 脚本作为新的子进程打开。每当脚本文件异常失败时,while 循环都会将脚本文件作为新的子进程重新启动。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不死鸟.亚历山大.狼崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值