尝试重新启动脚本时python shell重新启动

时间:2018-03-14 23:21:38

标签: python

我一直在编写一个打开文件并编辑它们的程序,但是为了让代码完成需要做的事情,它必须自动重置自己,我花了一段时间浏览互联网以获得一些帮助但不能似乎找到其他人问这个问题。我试图用来重启的代码可能非常糟糕:

os.execl(sys.executable, sys.executable, * sys.argv)

感谢任何帮助。

import os

PassCount = 0
SetUp = 0

newpath = r"PassEncryptPY"
if not os.path.exists(newpath):
    os.makedirs(newpath)

f = open("PassEncryptPY/PassEncryptPY_PTF.txt", "a")
g = open("PassEncryptPY/PassEncryptPY_ETF.txt", "a")

if os.path.getsize(r"PassEncryptPY/PassEncryptPY_PTF.txt") == 0:
    print("we have detected that you dont have a password")
    pas = input("Your password: ")
    f.write(pas)
    SetUp = SetUp + 1

if os.path.getsize(r"PassEncryptPY/PassEncryptPY_ETF.txt") == 0:
    print("we have detected that you dont have a email")
    ema = input("Your email: ")
    g.write(ema)
    SetUp = SetUp + 1

if SetUp != 0:
    print("Set Up complete, restarting")
    f.flush()
    g.flush()
    os.fsync(f.fileno())
    os.fsync(g.fileno())
    import sys
    os.execl(sys.executable, sys.executable, * sys.argv)

f.close()
g.close()

1 个答案:

答案 0 :(得分:1)

sys.executable可能不是您所期望的。 (假设您使用./some_name.py而不是python ./some_name.py运行脚本)它几乎总是解释器而不是您正在运行的脚本。

你可能想要这样的东西:

own_name = sys.argv[0]
os.execl(own_name, own_name, *sys.argv[1:])

打印您的sys.executablesys.argv以查看差异。