如何将 sys.stderr.write 写入 Python 中的 json 文件?

问题描述

我正在使用 mrjob 库运行 MapReduce 作业,我想将执行时间记录到 json 文件中。

我用这个 code 记录时间:

from datetime import datetime
import sys

if __name__ == '__main__':
    start_time = datetime.Now()
    MRJobClass.run()
    end_time = datetime.Now()
    elapsed_time = end_time - start_time
    sys.stderr.write(elapsed_time)

我必须将时间打印到 stderr,因为它只适用于这种方法

我无法使用此代码写入 json 文件,因为我的代码将在分布式模式下运行:

data = {}
data["step1"] = elapsed_time
with open('time.json','w') as outfile:
    json.dump(data,outfile)

如何使用 sys.stderr.write() 将经过时间写入本地文件夹中的 JSON 文件

解决方法

json.dump 写入一个类似文件的对象——意味着它有一个 .write(str) 方法。 sys.stderr 是一个类似文件的对象:

from datetime import datetime
import sys
import time
import json

start_time = datetime.now()
time.sleep(1)
elapsed_time = datetime.now() - start_time
data = {"step1":str(elapsed_time)}
json.dump(data,sys.stderr)

输出:

{"step1": "0:00:01.004999"}