【问题标题】:no print output after obtaining input from msvcrt.getch() on same line从同一行的 msvcrt.getch() 获取输入后没有打印输出
【发布时间】:2021-06-04 17:36:06
【问题描述】:

目标

  • 从同一行获取用户的单个字符输入,无需按ENTER
  • 在用户选择选项后打印。

代码

import msvcrt

print("Overwrite? (y/n): ", end="", flush=True)
res = msvcrt.getch()

if res.upper() == 'Y':
    print("The file has been overwritten.")

目前,我在程序中输入y后,下面的打印语句没有被打印出来。

print("The file has been overwritten.")

【问题讨论】:

    标签: python printing msvcrt


    【解决方案1】:

    事实证明,msvcrt.getch() 将返回 bytes 类型而不是 str,因此您必须在尝试检查其值之前将输入解码为 utf-8

    import msvcrt
    
    print("Overwrite? (y/n): ", end="", flush=True)
    res = msvcrt.getch().decode('utf-8')
    
    if res.upper() == 'Y':
        print("The file has been overwritten.")
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2016-10-02
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多