python - 尝试在泡菜对象上使用 atomic_write
问题描述
我想以“安全”的方式将泡菜对象(不仅是可以获取字符串表示的字典)存储到磁盘上,因此它将执行 fsync、os.replace 等.. 就像在 atomic_write 中对字符串一样。
这是我的代码:
from atomicwrites import atomic_write
from dataIO import pk
import pickle
dict1 = {'goo':1,'mos':2}
with atomic_write('foo.txt', overwrite=True) as f:
f.write(pickle.dumps(dict1, protocol=pickle.HIGHEST_PROTOCOL))
我在做什么错?我正进入(状态:
TypeError: must be str, not bytes
解决方案:
from atomicwrites import atomic_write
from dataIO import pk
import pickle, json
dict1 = {'goo':1,'mos':2}
with atomic_write('foo.pkl', mode='wb', overwrite=True) as f:
#f.write(json.dumps(dict1))
f.write(pickle.dumps(dict1, protocol=pickle.HIGHEST_PROTOCOL))
dictname = pickle.load(open("foo.pkl", "rb"))
print(dictname)
但我不明白为什么负载工作而负载不工作。有人可以验证我的代码是否正确吗?
解决方案
推荐阅读
- python - 对字典中的嵌套列表进行排序
- javascript - 部署到heroku服务器
- java - android.widget.FrameLayout.layoutChildren
- c# - 使用 ASP.net 核心身份 MVC 记录登录用户的 IP
- javascript - 在 TypeScript 中按值类型排除对象键
- pascal - 如何编写指数函数 (e^x)?
- docker - 在创建的网络中,docker 容器内没有互联网
- php - Woocommerce 税在更新后不起作用
- pdf - 是否有一些快速的魔术技巧可以通过在文本编辑器中编辑 PDF 来从 pdf 文件中删除数字签名表单字段?
- c# - Xamarin c# 无法调用 Google Gson FromJson