2012-02-04 72 views
0

目前,我有一個腳本如下代碼:如何打印在同一行中的蟒蛇不使用,

print "Loading... " 
html = urllib2.urlopen(url).read() 
print "Done" 

那偉大工程,它顯示加載,在下載完成暫停,然後顯示完成。唯一的問題是,「完成」在下一行。

理想的情況下,這將是在同一行,所以我會得到Loading... (pause) done

我嘗試添加一個逗號到第一print語句的結束,不過雖然能夠實現期望的輸出,它不輸出任何字符串,直到它已經加載的HTML,因爲逗號告訴python等待,直到完成打印語句(至少我認爲它)。

那麼如何在同一行上打印「加載」和「完成」,同時仍然能夠獨立輸出它們?

回答

6

標準輸出行緩衝,你必須清理一下的:

sys.stdout.flush() 
3

使用可以使用sys模塊

sys.stdout.write("plop") 
+0

都能跟得上沒有系統文件對象(標準輸入,標準輸出,標準錯誤)在OS odule – shenshei 2012-02-04 20:51:10

2

試試這個:

import sys 
print "Loading... ", 
sys.stdout.flush() 
html = urllib2.urlopen(url).read() 
print "Done" 
3

sys.stdout調用flush()似乎具有預期的效果,由模擬'負載' 0:

#!/usr/bin/env python 

from sys import stdout 
from time import sleep 

print "Loading... ", 
stdout.flush() 
sleep(5) 
print "Done" 

所以,雖然它使用,,你說你不想在你的問題做印刷,但它確實解決問題。

2

這種方式也適用,儘管它有需要的Python此後3打印語法的缺點...

from __future__ import print_function 

print("Loading...", end=" ") 
html = urllib2.urlopen(url).read() 
print("Done")