2013-05-10 48 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

相關問題