关于python:仅在函数执行完毕后打印

Print only prints after functions are finished executing

本问题已经有最佳答案,请猛点这里访问。

我有这个代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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."

我注意到,在处理完这些函数之前,它不会打印第一个和最后一个打印语句。我想是预期行为吧。

那么,如何让它在开始处理函数之前打印第一行呢?


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

尾随逗号表示打印不应在末尾添加换行符。但是,大多数控制台在没有换行符的情况下不会刷新输出,因此在打印换行符之前,您不会看到输出。

如果去掉逗号,就可以看到它起作用了。

但是,您可以手动刷新输出而不打印新行字符。但您需要手动执行此操作:

1
2
3
4
5
6
import sys
print"Fetching info from New Relic....",
sys.stdout.flush()

# do stuff
print"Done"