2016-05-03 29 views
1

當我在空閒時使用回車時,似乎沒有任何事情發生。python 3.4中的回車不會移動到左邊

>>>print('2\r3') 
23 
>>> carriage_return = "I will use a carriage\rreturn" 
>>> print(carriage_return) 
I will use a carriagereturn 

如果我通過命令行運行相同的行它工作正常。

>>>print('2\r3') 
3 

這是一個空閒的錯誤(如果是的話是否有解決方法)還是我缺少一些簡單的東西?我的操作系統是Windows 7

+0

沒有答案,但我找到了相關的電子郵件存檔:https://mail.python.org/pipermail/tutor/2006-February/045277.html。這就是說,使用回車這種方式是非常罕見的。事實上,它是Windows對新行的標準表示的一部分,並且是舊行的Mac代表的換行符,可能是它不常見的原因之一。我當然不會指望它可以跨系統移植。 (或者甚至在顯示器上,正如你發現的那樣,例如,它如何使用PuTTY進行SSH工作?)你想完成什麼? – jpmc26

+0

感謝您的鏈接,這是我正在尋找的答案。我並沒有試圖完成任何事情,特別是通過O'reilly系列的工作。我發現如果我不瞭解某些東西,它會在稍後咬我。 – KEJ

回答

0

在Windows下你必須做一個「新行」 \n你做一個「回車」之前\r

示例:基於評論

>>>car = "carriage\n\rreturn" 
>>>print (car) 
carriage 
return 
>>> 

[編輯]

如果我們的目標是打印比上年線,下面可在Microsoft Windows

import sys 

def print_and_return(string): 
    #adding '\b' which moves the carriage back one character 
    #based on length of the string 
    sys.stdout.write(string.ljust(len(string)*2,'\b')) 
    sys.stdout.flush() 

#this will print to stdout, and 'return' position to start 
print_and_return("string1") 

#normal print, but starting at the start of the previous print 
print("string2") 
012使用

這將產生

string2 

,將有覆蓋原來的字符串,就可以把兩個語句之間time.sleep(),如果你想看到它。

但是,這將打印在原始行的第一行上,但它不會刪除以前打印的字符串,因此如果第二個字符串比最初打印的字符串短,原始打印的字符串的末尾保持打開屏幕。

print_and_return("string1=long") 
print("string2") 

會產生

string2=long 

您可以隨時返回以前的字符串的長度,然後添加空格到第二個字符串,然後將用空格覆蓋其他字符的結束。

import sys 

def print_and_return(string): 
    sys.stdout.write(string.ljust(len(string)*2,"\b")) 
    sys.stdout.flush() 
    return len(string) 

l = print_and_return("string1=long") 

#normal print, but starting at the start of the previous print 
#adding spaces to ensure the length is the same as previous printed string 
print("string2".ljust(l)) 

它將會產生:

string2 

HTH。

+0

它返回到* same *行的開頭並覆蓋現有字符的目標。你的答案不會這樣做;它會把內容放在一個新的線上。 – jpmc26

+0

@ jpmc26,我編輯了我的答案和代碼覆蓋 –