下面是一个完整的脚本,我正在尝试自动执行 ping 多个路由器的过程,并每 2 小时执行一次,但我也希望能够在任何给定时间终止它。
def start():
for file_name in file_list:
unrechable = []
rechable = []
print("Processing:"+file_name,end="\n")
open_file(file_name, rechable, unrechable)
if len(unrechable) > 0:
print("These IP from " + file_name + " are Unrechable:")
for i in unrechable:
print(i,end="\n")
print("")
else:
print("All IP's are Rechable from " + file_name)
return
'''
'''
def open_file(file_name, rechable, unrechable):
df = pd.read_excel("D:/Network/"+file_name+".xlsx")
col_IP = df.loc[:, "IP"].tolist()
col_name = df.loc[:, "Location"].tolist()
check(col_IP, col_name, rechable, unrechable)
return
'''
'''
def check(col_IP, col_name, rechable, unrechable):
for ip in range(len(col_IP)):
response = os.popen(f"ping {col_IP[ip]} ").read()
if("Request timed out." or "unreachable") in response:
print(response)
unrechable.append(str(col_IP[ip] + " at " + col_name[ip]))
else:
print(response)
rechable.append(str(col_IP[ip] + " at " + col_name[ip]))
return
'''
'''
def main1():
while(True):
start()
print("Goint to Sleep for 2Hrs")
time.sleep(60)
def qu():
while(True):
if(keyboard.is_pressed('q')):
print("exit")
os._exit
'''
'''
file_list = ["ISP" , "NVR"]
if __name__ == '__main__':
p2 = Thread(target=main1)
p3 = Thread(target=qu)
p2.start()
p3.start()
我在这里创建了 2 个线程,一个运行主脚本,另一个则查找键盘中断。但是一旦按下 q ,只有一个线程终止。后来我发现不可能同时终止两个线程,此时我完全迷失了
最佳答案
我认为你应该在主线程中监听键盘中断。然后您可以在中断时调用 p2.join()
。
但是为什么要用q
呢? Ctrl+C
不适合您吗?这是默认中断。那么您就不必实现任何其他特殊逻辑。
关于python - 按下 'q' 后如何终止脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76678629/