1

我在Python 3中制作了一个基本实用程序,用户在其中输入命令并将反馈打印到控制台中。使用input()orsys.stdin.readline()函数输入数据时,命令行会话可能看起来像这样(包括 \r 和 \n 字符)

1. What is your name:\n
2. <user input>\n
3. Your name is <variable>.\n

但是,我想\r在用户按回车键而不是字符后显示一个字符\n,如第 2 行所示。在用户输入所有内容并按回车键后,它看起来像这样

1. What is your name:\n
2. Your name is <variable>.\n

(因为第 2 行在输入的数据后面会有一个\r字符,将光标返回到最左边)

有人知道我可以做到这一点的方法吗?

4

2 回答 2

0

好吧,我发现了这种方法,尽管我几乎可以肯定该msvcrt模块仅适用于 Windows。

import msvcrt
import sys

def msgInput(prompt):
    print(prompt, end='')
    data= b''
    while True:
        char= msvcrt.getch()
        if char != b'\r':
            print(char.decode(), end='')
            sys.stdout.flush()
            data= data+char
        else:
            print('\r', end='')
            break
    return data.decode()

如果有人知道任何跨平台方法,请分享。

更新- 不幸的是,这种方法有很多限制,例如用户无法使用箭头键导航输入的文本。

于 2013-05-10T21:33:42.130 回答
-1

好吧,我相信我找到了您想要的解决方案:

strng=input("Enter String - ")

其中 strng 只是一个保存输入响应的变量。这将在解释器中返回字符串 Enter String - (不带任何引号)并允许您将响应保存在变量 strng 中。

于 2013-11-17T04:11:06.850 回答