【发布时间】:2018-11-03 07:38:13
【问题描述】:
我试图在 for 循环的每次迭代之后将datetime.datetime.now() 写入文本文件,这样我就可以计算每秒对我们的 API 进行的调用次数。这是我的工作代码
import requests
import datetime
import config
# create a file with a timestamp starting at runtime.
with open('timelog-' + str(datetime.datetime.now().strftime("%y-%m-%d--%H-%S")) + '.txt', 'a') as log_time:
for x in range(10):
req = requests.post('https://' + config.env.lower() + '.website.com/args'
+ config.cli + '/args/'
+ config.con + '/args/?args='
+ config.cel + '&date='
+ config.req + '&args', headers=config.head)
log_time.write(str(datetime.datetime.now().replace(microsecond=0)) + "\n")
log_time.flush()
现在,让我感到困惑的是,如果我要注释掉 req ,我就不需要包含 log_time.flush()。同样,如果我要删除 log_time.flush(),log_time.write() 将无法正常工作,而是以空白文件结束。
这种行为有什么特别的原因吗?
【问题讨论】:
-
嗯,离开
with上下文时隐式完成的log_time.close()包括flush。如果您注释掉flush,则在 10 个请求中的最后一个请求之后文件是否仍为空白? -
是的,老实说,这让我大吃一惊!我让一位同事看了一下,他们说的完全一样,可以理解。
标签: python python-3.x python-requests