用户输入的单个字符在调试期间工作正常,但在运行时工作不正常

问题描述 投票:0回答:1

我目前正在制作一个程序,该程序读取用户的输入并将其存储在文件中。当用户输入某个字符时,它应该显示在终端中,但是在运行时,程序会等待,直到输入“enter”键以显示当前行上写入的文本。相反,在调试时,一切都按预期运行。为什么会出现这种情况?

这是代码:

import os
from msvcrt import getch

def get():
    string = str(getch())
    string = string.replace("'", "", 2)
    string = string.replace("b", "", 1)
    return string

def addEn():
    os.system("cls")
    lineDict = {}
    line = ""
    lastLine = 0

    print("SYNTAX: word - дума")
    print("Input '|' to stop")
    print("---------------------")

    f = open('test.txt', mode = "w")

    f.write("\n")
    inp = get()
    print("0. ", end = "")
    while inp != "|":
        if inp != "\\r":
            line = line + inp

            print(inp, end = "")
            f.write(inp)
        elif inp == "\\r":
            lastLine = lastLine+1

            print("\n", end="")
            f.write("\n")

            print(f"{lastLine}. ", end="")
            lineDict[lastLine-1] = line

            line = ""
        inp = get()
        
    f.close()

    print("\nPress any key to go back. . .")
    getch()

addEn()

注意:代码还没有完成,所以会有错误(除了我正在写的)

python input
1个回答
0
投票

对于将来遇到同样令人困惑的问题的任何人:由于未打印

\n
字符,因此需要刷新缓冲区。它需要手动完成,方法是在每个具有参数
sys.stdout.flush()
的打印函数后面添加
end
,而在给定的字符串中没有新行,或者只需将
flush
添加到
print()
并将其设置为
TRUE

这里有一篇文章比我解释得更好: https://www.geeksforgeeks.org/python-sys-stdout-flush/

© www.soinside.com 2019 - 2024. All rights reserved.