Python 扭曲的I/O归档文件
我在编写异步I/O程序时遇到问题。我试图实现的是:将json数据转储到一个临时文件中,这样我就可以使用子流程创建该文件的存档(使用json数据)。但是,我发现我正在尝试从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')
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:由于以前的错误而以失败状态退出
,现在存档中没有文件,甚至不像以前一样是空的