2015-09-16 107 views
0

後打印我有這樣的代碼:僅打印功能執行完畢

def get_endpoint(type): 
    return "%s/%s.json" % (v2_endpoint,type) 

def get_entities(type,endpoint=None,entities=None): 
    if not endpoint: 
     endpoint=get_endpoint(type) 
     entities=[] 
    r=requests.get(endpoint,headers=header) 
    entities.extend(r.json()[type]) 
    if not 'next' in r.links: 
     return entities 
    else: 
     return get_entities(type,r.links['next']['url'],entities) 

print "Fetching info from New Relic....", 
servers = get_entities('servers') 
applications = get_entities('applications') 
print "Done." 

我注意到它不打印的第一個和最後打印報表,直到它已經處理了這些功能。我認爲,預期的行爲。

那麼,如何讓它在開始處理函數之前打印第一行呢?

+0

它應該打印第一行,向我們展示更多代碼。 – taesu

+0

更多附加碼附加程序@taesu –

+0

第一個'print'結尾處的昏迷使得stdout不會被刷新。 –

回答

4
print "Fetching info from New Relic....", 

尾隨逗號意味着打印不應該在最後添加換行符。但是,大多數控制檯在沒有換行時不刷新輸出,因此直到打印換行符時纔看到輸出。

如果您刪除了逗號,您可以看到它會起作用。

但是,您可以手動刷新輸出而不打印新的行字符。但您需要手動執行此操作:

import sys 
print "Fetching info from New Relic....", 
sys.stdout.flush() 

# do stuff 
print "Done"