【问题标题】:How should I be going about exiting python script when user types 'q'?当用户键入“q”时,我应该如何退出 python 脚本?
【发布时间】:2016-07-31 23:42:11
【问题描述】:

我正在尝试添加代码以在用户键入 q 时正确退出我的 curses python 脚本。我不能只做CTRL+C,因为这样curses 就不会被正确地取消初始化。

我还没有找到一个很好的解决方案来获取具有超时的用户输入,因此在用户提供一些输入之前程序不会坐在那里。

是否有一种简单的方法来创建仅处理用户输入并可以请求主线程运行 de-init 函数的第二个线程?

【问题讨论】:

标签: python curses python-curses


【解决方案1】:

建议的答案Python3 + Curses: How to press “q” for ending program immediately? 是一个起点,但(就像使用单独线程的建议一样)不是所需要的。

这里是一个例子,从前者开始:

import sys, curses, time

def main(sc):
    sc.nodelay(1)

    while True:
        try:
            sc.addstr(1, 1, time.strftime("%H:%M:%S"))
            sc.refresh()

            if sc.getch() == ord('q'):
                break

            time.sleep(1)
        except KeyboardInterrupt:
            curses.endwin()
            print "Bye"
            sys.exit()

if __name__=='__main__': curses.wrapper(main)

当您按下^C 时,它会发送一个键盘中断。如果你发现了,你可以告诉 curses 进行清理(并恢复终端模式)。之后,退出。

单独的线程将无法工作,因为底层的诅咒不太可能是线程安全的(而且不太可能有人已经开始使用 Python 的功能)。

进一步阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多