如何使 python 脚本自行重启

How to make a python script reboot itself

我实际上在我的树莓派 3 没有互联网 上实习。

首先,我创建了一个 python 脚本,我使用 Cron 安排它每 12 小时更新一次我的树莓派的小时数。

其次,我还有另一个脚本应该 运行 不断。 但是我观察到,当我更新时间时,我的脚本 运行 不断更新它的日期时间。

所以我想重新启动它,让脚本考虑时间。 这是我的脚本,我想重新启动。

from math import *
import pyorbital
from pyorbital import tlefile
from pyorbital.orbital import Orbital
import serial 
import time 
from datetime import datetime
import os
import sat_class
import predict
import rotator_treshold_test

def rotator_set (azel,v):

    if v == False:      
        az = 0
        el = 90

        print(('waiting \n azimuth = %f    elevation = %f\n\n')%(az,el))


    else:
        az = azel[0]

        if azel[1] < 0:
            el  = 0

        else :
            el = azel[1]
        print(('tracking satellite \n azimuth = %f    elevation = %f\n\n')%(az,el))





def satellite_track(): 
    k=0
    saved = [0]
    p = '?'
    b = '?'


    sat = sat_class.Satellite()
    mission = predict.Mission()
    verif = mission.verif 

    if verif == False:
        mission = predict.Mission()
        now= mission.now
        print(now)
        azel = [0,0]                        # we don't need to put azel here we are in waiting mode .
        rotator_set(azel,verif)
        time.sleep(29)




    else :

        mission= predict.Mission()
        print("current time1:   ",mission.now,'\n',mission.start,'     ',mission.end)
        verif1 = mission.verif
        end = mission.end
        now2 = mission.now

        while now2 <= end :

            azel = rotator_treshold_test.az_correct(saved[k])
            rotator_set(azel,verif1)
            saved.append(rotator_treshold_test.az_correct(azel[0]))
            k+=1
            mission = predict.Mission()
            now2 = mission.now
            print(now2)
            time.sleep(0.8)

    ##I would like to reboot my script here





while True :
    satellite_track()

您可以使用 os.execl() 重新启动程序。

来源:https://docs.python.org/3/library/os.html#os.execl