我一直在编写一个打开文件并编辑它们的程序,但是为了让代码完成需要做的事情,它必须自动重置自己,我花了一段时间浏览互联网以获得一些帮助但不能似乎找到其他人问这个问题。我试图用来重启的代码可能非常糟糕:
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()
答案 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.executable
和sys.argv
以查看差异。