2013-05-10 74 views
1

我正在制作一个基本实用程序Python 3其中用户输入命令并将反馈信息打印输出到控制台。当进入使用input()sys.stdin.readline()功能的数据,这是命令行会话可能是什么样子(包括\ r和\ n个字符)如何在使用input()输入文本时在Python 3中不发出新行()

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字符,返回游行回到th e最左)

有人知道我可能做到这一点吗?

+0

所以你想隐藏用户输入的下一行打印? – cmd 2013-05-10 20:17:02

+0

@cmd基本上,是的。同时还在同一行上打印下一行。 (这就是为什么'\ b'字符不起作用) – 2013-05-10 20:31:54

+0

考虑到你的其他问题,我假设你是针对Windows? – 2013-05-10 20:49:59

回答

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() 

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

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

-1

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

strng=input("Enter String - ") 

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

+0

我很久以前就停止了这个项目的开发,但我相信用户的目的是能够输入文本(在终端窗口中),并让用户在输入用户名后输入文本。这在Python IDLE控制台中绝对是不可能的,但是在Windows控制台或UNIX终端中可以使用高级技术(如msvcrt或curses模块)。 – 2013-11-23 20:08:28

相关问题