在 try/except 的 while 循环中打印不起作用(Windows!!!)

print doesn't work while in while loop with try/except (Windows!!!)

不确定这里出了什么问题,函数没有打印任何内容(尝试将“1”作为参数 i)。我看到一个建议添加 flush=True 打印的答案,但这并不能解决问题。任何提示表示赞赏!更广泛地说 - 如果我希望该功能由键盘控制,我是否应该使用 try/except 框架,或者是否有更好的方法?

def i_printer(i):
    while True:
        try:
            if keyboard.is_pressed('q'):
                break
        except:
            print(i)
            time.sleep(3)

编辑:使用 Windows,显然键盘无法使用,正在寻找不同的解决方案。

try 和 except 块用于处理异常。由于单击 'q' 时不会出现任何错误,我认为在这里使用它们没有任何好处。只需简单的 if 语句即可。

def i_printer(i):
    while True:
        if keyboard.is_pressed('q'):
            break
        print(i)
        time.sleep(3)

编辑: 如果您想录制键盘按下试试这个。以下代码将记录除 'q' 之外的所有键并打印记录的键。

import keyboard

def i_printer():
    rk = keyboard.record(until ='q') 
    return keyboard.play(rk, speed_factor = 1) 

i_printer()

通过生成器函数和迭代器(使用 windows,而不是 linux),事情就这样开始了:

import keyboard
import time

def printer():
    while True:
        yield '1'
        time.sleep(1)

def iterator():
    for i in aaa():
        if keyboard.is_pressed('q'):
            break
        else:
            print(i)

iterator()