您如何使python程序自动重新启动?因此,假设有一个非常简单的程序,例如:
var = input("Hi! I like cheese! Do you like cheese?").lower()
if var == "yes":
print("That's awesome!")
现在,在Python Shell中,您将必须按“运行”按钮,然后按“运行模块(F5)”,或者仅按键盘上的“
f5”按钮。那是您第一次运行它。程序结束后,您将返回到“ Cheese.py”文件,然后按“
f5”再次运行该程序。大家和我在一起吗?好的,所以我的问题是,如何使程序自动重新启动,而无需手动执行?
这取决于您所说的“重新启动自身”。如果只想连续执行相同的代码,则可以将其包装在一个函数中,然后在while True
循环内调用它,例如:
>>> def like_cheese():
... var = input("Hi! I like cheese! Do you like cheese?").lower() # Corrected the call to `.lower`.
... if var == "yes":
... print("That's awesome!")
...
>>> while True:
... like_cheese()
...
Hi! I like cheese! Do you like cheese?yes
That's awesome!
Hi! I like cheese! Do you like cheese?yes
That's awesome!
如果要 实际 重新启动脚本,则可以再次执行该脚本,通过执行以下操作将当前进程替换为新进程:
#! /bin/env python3
import os
import sys
def like_cheese():
var = input("Hi! I like cheese! Do you like cheese?").lower()
if var == "yes":
print("That's awesome!")
if __name__ == '__main__':
like_cheese()
os.execv(__file__, sys.argv) # Run a new iteration of the current script, providing any command line args from the current iteration.
这将连续重新运行脚本,提供从当前版本到新版本的命令行参数。这种方法的更详细的讨论可以在后“中找到重新开始一个python脚本在自身内”由彼得Zemek。
本文注意的一项是:
如果您使用上述解决方案,请记住,这些
exec*()
函数会导致立即替换当前进程,
而不会刷新打开的文件对象。因此,如果在重新启动脚本时有任何打开的文件,则应在调用
函数之前使用f.flush()
或刷新它们。os.fsync(fd)
exec*()
问题内容: 如何重新启动Java AWT应用程序?我有一个附加了事件处理程序的按钮。我应该使用什么代码来重新启动应用程序? 我想做与应用程序中相同的事情。 问题答案: 当然,可以重新启动Java应用程序。 以下方法显示了一种重新启动Java应用程序的方法: 基本上,它执行以下操作: 查找Java可执行文件(我在这里使用了Java二进制文件,但这取决于您的要求) 查找应用程序(在我的情况下是一个ja
问题内容: 我试图编写一个文件监视器,它将检查文件是否添加了新行,该监视器实际上是一个线程,它将始终由randomaccessfile读取该行。 这是监视器的核心代码: 这是一些帮助类: 这是调用监视器的示例: 现在,我的问题是,如果我仅调用以下代码,代码就可以很好地工作: 这将监视文件的行追加,并通知侦听器。 但是,当我致电: 这意味着我想监视另一个文件而不是之前。 因此,在Monitor中,我
我是C编程的初学者,如果我能得到一些关于如何重新启动程序的提示,我将不胜感激?我目前正在开发一个猜测游戏,用户有10次尝试猜测随机提供的秘密号码。我希望该程序能够从一开始就为用户提供新一轮游戏(尝试次数1猜测次数:),这意味着重新运行该程序。 以下是节目:
问题内容: 启动器在游戏中最常见。想想英雄联盟,星际争霸II或几乎所有的MMO。在开始实际游戏之前,您有一个小型启动器应用程序,负责更新和修补。 我想通过我正在开发的特定非游戏应用程序来朝这个方向发展。启动器的概念非常有意义:它检查更新,替换适当的二进制文件/库,运行完整性检查并启动应用程序。但是,启动器如何自我更新?这往往是罕见的事件,但是如何完成呢?启动程序实际上是否只是覆盖当前正在运行的二进
下面是在没有fxml的情况下重新启动JavaFX应用程序的代码。 但是,我想用fxml实现这一点。 我不知道如何使用fxml应用此代码。 我的代码。 Main.java 控制器。JAVA 样品fxml 我想重新启动我的JavaFX应用程序。 我不知道如何使用fxml应用此代码。 如何使用fxml重新启动JavaFX应用程序?
问题内容: 我编写了一个脚本,该脚本可以通过从网站上下载最新版本并覆盖正在运行的脚本来保持最新状态。 我不确定更新脚本后重新启动脚本的最佳方法是什么。 有任何想法吗? 我真的不想要一个单独的更新脚本。哦,它也必须在两个linux / windows上都可以工作。 问题答案: 在Linux或任何其他形式的Unix中,os.execl和它的朋友是一个不错的选择- 您只需要重新执行sys.executa