扭曲的I / O归档文件

时间:2016-07-13 07:55:09

标签: python json twisted archive

我在编写异步I / O程序时遇到了麻烦。我想要实现的是:将json数据转储到一个临时文件中,这样我就可以使用subprocess来创建该文件的存档(使用json数据)。但是我发现我正在尝试从tempfile.NamedTemporatyFile中找到一个空文件。

    serialized_data = {'a': 1}

    temp_file = tempfile.NamedTemporaryFile(dir='.', prefix='serialized_', suffix='.json')
    temp_file.write(json.dumps(serialized_data))

    arch_name = temp_file.name + '.tar.gz'
    tar_cmd_args = ['tar', '-czf', arch_name, temp_file.name]
    subprocess.call(tar_cmd_args)
    #d = threads.deferToThread(subprocess.call, tar_cmd_args)

我试图尽可能地避免I / O,因为我不想阻止回调链,我必须确保这些操作是线程安全的。 或者是解决我问题的另一种方法?我真的想避免json.dump(serialized, file_name)

[编辑]

temp_file.close()导致: tar: /home/bartosz/Documents/serialized_mnaFP_.json: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors

解决方法是关闭文件,但要刷新。 temp_file.flush()

create & read from tempfile

1 个答案:

答案 0 :(得分:0)

在写入文件并启动辅助线程之前关闭文件。