pyinstaller exe 等待用户在命令提示符下输入任何键,然后恢复下一次迭代。如何在不输入任何密钥的情况下保留它运行

pyinstaller exe waits for user to enter any key on command prompt and then resumes next iteration. How to keep it running without entering any key

我已经使用 Tkinter 创建了一个应用程序,它将连接到 SSH 和 运行 几个命令。此过程使用调度程序 运行 在一个循环中进行。 第一次迭代后,命令提示符卡住,直到我按回车键才会恢复显示。它只是不会在命令提示符下显示输出。我正在将该输出写入文件。直到我在命令提示符下按任意键,甚至文件都没有更新。看起来它等待一些 input/key 笔画开始下一次迭代。 按回车键后,我可以看到它已经 运行ning 在后台,因为它突然在屏幕上显示了很多输出。 如何连续run/display/focus呢?我正在使用调度程序,这样我的工作将持续 运行ning 几个小时。但是由于命令提示符卡住的问题,我无法使用命令提示符查看我的程序是否 运行ning。

如果我一直打开我的命令提示符 window ,一切正常,输出 window 出现并且输出被写入文件,如果 window 被最小化,输出 window 没有出现并且文件没有得到更新。 看起来它只有在聚焦时才有效(命令提示符未最小化) 请帮忙

代码在这里:

import tkinter.messagebox
import paramiko
import time
from datetime import datetime, timedelta
import tkinter.messagebox
import tkinter
import sys
import apscheduler
from apscheduler.schedulers.blocking import BlockingScheduler
import babel.numbers # for exe


def display_output(targetopname):

    hostname_ip = "192.168.1.101"
    username = "admin"
    password = "admin"

    # create /append output file
    output_file = open(targetopname, "a+")
    port = 22

    i = 0
    while True:
        try:
            ssh = paramiko.SSHClient()
            #ssh.load_system_host_keys()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(hostname_ip, 22, username, password)
            break
        except paramiko.AuthenticationException:
            print("Authentication failed when connecting to %s" % hostname_ip)
            sys.exit(1)
        except:
            print("Could not SSH to %s, waiting for it to start" % hostname_ip)
            i += 1
            time.sleep(2)
            if i == 3:
                print("Could not connect to %s. Giving up" % hostname_ip)
                sys.exit(1)

    cmd_list = list()
    c1 = "config global"
    c2 = "get sys status"
    c3 = "end"

    cmd_list.append(c1)
    cmd_list.append(c2)
    cmd_list.append(c3)

    op_tk = tkinter.Tk()
    op_tk.wm_title("p2trial")
    op_tk.geometry("600x400")

    op_text_window = tkinter.Text(op_tk, height=600, width=400)
    op_scrollbar = tkinter.Scrollbar(op_tk)
    op_scrollbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    op_scrollbar.config(command=op_text_window.yview)
    op_text_window.pack(side=tkinter.LEFT, fill=tkinter.Y)

    channel = ssh.invoke_shell()
    for command in cmd_list:
        time.sleep(1)
        channel.send(command + '\n')
        time.sleep(0.30)
        if channel.recv_ready():
            time.sleep(0.30)
            outlines = channel.recv(10240).decode("ascii")
            op_text_window.insert(tkinter.END, outlines)
            op_text_window.pack(side=tkinter.LEFT, fill=tkinter.Y)
            op_tk.update()
            output_file.write(outlines)
        else:
            print("\nNo data for command ", command)

    time.sleep(2)
    channel.close()
    ssh.close()
    output_file.close()
    op_tk.destroy()
    dtnow = datetime.now()
    print("\n*** End of the function  ", dtnow)


if __name__ == '__main__':
    scheduler = BlockingScheduler()
    x = datetime.now() + timedelta(seconds=1)
    x += timedelta(seconds=1)
    targetfilename = "output.txt"

    scheduler.add_job(display_output, 'interval',  minutes=3,
                      max_instances=5, start_date=x,
                      end_date='2021-10-12 11:00:00.000000',args=[targetfilename])
    scheduler.start()

看起来它与命令提示符有关,与 tkinter 无关。 我已经提到了解决方案: Command prompt gets stuck and continues on enter key press

它正在解决我的问题。 谢谢大家。