在 Python 中的 if 语句上重新加载主脚本

Posted

技术标签:

【中文标题】在 Python 中的 if 语句上重新加载主脚本【英文标题】:Reloading main script on if statement in Python 【发布时间】:2015-11-30 17:41:41 【问题描述】:

我有一个 IRC 机器人正在处理扭曲。我希望他通过外部输入重新加载自己(断开连接,重新打开他的主 .py 文件,并在他运行时进行所有更改并重新开始)

if 语句类似于:

if msg.startswith(".restart"):
    if user in admin:
        msg = "Restarting"
        SendMsg(self, channel, msg)
        reload(main.py)

我找到的唯一答案是如何重新加载模块。

编辑:做我想做的事情的最佳答案是在接受答案下面的 cmets 中

【问题讨论】:

【参考方案1】:

脚本重新加载本身没有意义。执行将在哪里恢复? 唯一的可能是从头重新启动,这与杀死并重新启动进程相同。

您可以做的是将尽可能多的代码放入不同的模块(但不是主循环)中,然后从主脚本中调用该模块。 并且,当主脚本看到.reload 命令时,重新加载模块。

【讨论】:

是否有可能在别处开始自己运行然后退出()? 是的。使用os.execv(sys.argv[0], sys.argv[1:])。 docs.python.org/3/library/os.html#os.execv

以上是关于在 Python 中的 if 语句上重新加载主脚本的主要内容,如果未能解决你的问题,请参考以下文章

在购物车页脚中重新加载 PHP If/Else 语句而不重新加载整个页面? ( XT 浮动车)

如何使 VSCode 自动重新加载外部 *.py 模块?

grub2 脚本中的 if 语句总是计算为 true

Python 重新加载模块

如何重新加载 Python3 C 扩展模块?

重新加载并显示基于主故事板中的视图的表视图