【问题标题】:Python restart programPython重启程序
【发布时间】:2018-06-16 05:31:52
【问题描述】:

我制作了一个程序,最后要求您重新启动。

我import os 并使用了os.execl(sys.executable, sys.executable, * sys.argv) 但是什么也没发生,为什么?

代码如下:

restart = input("\nDo you want to restart the program? [y/n] > ")
if str(restart) == str("y"):
    os.execl(sys.executable, sys.executable, * sys.argv) # Nothing hapens
else:
    print("\nThe program will be closed...")
    sys.exit(0)

【问题讨论】:

  • 这很不寻常。你为什么试图从程序中重新调用程序?
  • restart == 'y',str 是多余的。另外,为什么不直接使用while?
  • @claudio26 试试看:os.execv(sys.executable, ['python'] + sys.argv)
  • @Anup 是的,解决了这个问题。非常感谢:)
  • 这看起来像XY Problem。实现这一点的正确方法是重构代码,这样您就可以简单地调用一个函数来重新运行程序。

标签: python restart python-os


【解决方案1】:
import os
import sys

restart = input("\nDo you want to restart the program? [y/n] > ")

if restart == "y":
    os.execl(sys.executable, os.path.abspath(__file__), *sys.argv) 
else:
    print("\nThe programm will me closed...")
    sys.exit(0)

os.execl(路径, arg0, arg1, ...)

sys.executable: python 可执行

os.path.abspath(__file__):你正在运行的python代码文件。

*sys.argv: 剩余参数

它将再次执行程序,例如python XX.py arg1 arg2。

【讨论】:

    【解决方案2】:
    os.execv(sys.executable, ['python'] + sys.argv)
    

    解决了问题。

    【讨论】:

      【解决方案3】:

      也许 os.execv 会起作用,但如果你有环境和路径变量设置,为什么不直接使用 os.system('python "filename.py"') :

      import os
      
      print("Hello World!")
      result=input("\nDo you want to restart the program? [y/n] > ")
      if result=='y':
           os.system('python "C:/Users/Desktop/PYTHON BEST/Hackerrank.py"')
      else:
           print("\nThe program will be closed...")
      

      【讨论】:

        【解决方案4】:

        只需导入您要重新启动的程序并在所需条件下运行即可,如下所示 标题:你好。 py 导入你好 如果(在此处输入一般条件): 你好

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。
        猜你喜欢
        • 1970-01-01
        • 2014-07-30
        • 2011-06-01
        • 1970-01-01
        • 2019-12-14
        • 1970-01-01
        • 2010-09-22
        • 2020-12-29
        • 1970-01-01
        相关资源
        最近更新 更多