Python 扭曲的I/O归档文件

Python 扭曲的I/O归档文件,python,json,twisted,archive,Python,Json,Twisted,Archive,我在编写异步I/O程序时遇到问题。我试图实现的是:将json数据转储到一个临时文件中,这样我就可以使用子流程创建该文件的存档(使用json数据)。但是,我发现我正在尝试从tempfile.NamedTemporatyFile对一个空文件进行tar serialized_data = {'a': 1} temp_file = tempfile.NamedTemporaryFile(dir='.', prefix='serialized_', suffix='.json')

我在编写异步I/O程序时遇到问题。我试图实现的是:将json数据转储到一个临时文件中,这样我就可以使用子流程创建该文件的存档(使用json数据)。但是,我发现我正在尝试从
tempfile.NamedTemporatyFile
对一个空文件进行tar

    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(序列化,文件名)

[编辑]

temp\u file.close()
导致:
tar:/home/bartosz/Documents/serialized\u mnaFP\ujson:Cannot stat:没有这样的文件或目录tar:由于以前的错误而以失败状态退出

解决方案不是关闭文件,而是刷新。
temp\u file.flush()


在写入文件后和启动次线程之前关闭该文件。

在写入文件后和启动次线程之前关闭该文件。

现在我得到:
tar:删除前导/成员名
tar:由于以前的错误而以失败状态退出
,现在存档中没有文件,甚至不像以前一样是空的现在我得到:
tar:删除成员名的前导/后导/code>tar:/home/bartosz/Documents/serialized\u mnaFP\uz.json:Cannot stat:没有这样的文件或目录
tar:由于以前的错误而以失败状态退出
,现在存档中没有文件,甚至不像以前一样是空的