python-3.x pickling 创建空文件
python-3.x pickling creates empty file
我是 python 的新手,正在尝试 store/retrieve 一些复杂的数据结构到文件中,并且正在尝试酸洗。
但是,下面的示例一直在创建一个空白文件(那里没有存储任何内容),并且我 运行 在第二步中出错。我一直在谷歌搜索,只是为了找到与我的完全匹配的其他示例 - 然而,它似乎没有用。
我可能缺少什么?提前发送!
import pickle
messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)
f = open("pickletest.pickle","wb")
pickle.dump(messageToSend,f)
f.close
g = open("pickletest.pickle","rb")
messageReceived = pickle.load(g)
print("after: \n",messageReceived)
g.close
我还不确定为什么,但问题与您分配用于打开文件的变量有关。不要分配变量和代码工作。
import pickle
messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)
pickle.dump(messageToSend, open("pickletest.pickle","wb"))
messageReceived = pickle.load(open("pickletest.pickle","rb"))
print("after: \n",messageReceived)
您没有关闭文件。请注意,您写的是 f.close
而不是 f.close()
在python中处理文件的正确方法是:
with open("pickletest.pickle", "wb") as f:
pickle.dump(messageToSend, f)
因此即使在处理过程中出现错误,它也会在 with
块结束时自动关闭文件。
给出的其他答案仅在某些 Python 实现中有效,因为它依赖于垃圾收集器关闭文件。这是非常不可靠且容易出错的。处理任何需要关闭的内容时始终使用 with
。
我是 python 的新手,正在尝试 store/retrieve 一些复杂的数据结构到文件中,并且正在尝试酸洗。 但是,下面的示例一直在创建一个空白文件(那里没有存储任何内容),并且我 运行 在第二步中出错。我一直在谷歌搜索,只是为了找到与我的完全匹配的其他示例 - 然而,它似乎没有用。 我可能缺少什么?提前发送!
import pickle
messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)
f = open("pickletest.pickle","wb")
pickle.dump(messageToSend,f)
f.close
g = open("pickletest.pickle","rb")
messageReceived = pickle.load(g)
print("after: \n",messageReceived)
g.close
我还不确定为什么,但问题与您分配用于打开文件的变量有关。不要分配变量和代码工作。
import pickle
messageToSend = ["Pickle", "this!"]
print("before: \n",messageToSend)
pickle.dump(messageToSend, open("pickletest.pickle","wb"))
messageReceived = pickle.load(open("pickletest.pickle","rb"))
print("after: \n",messageReceived)
您没有关闭文件。请注意,您写的是 f.close
而不是 f.close()
在python中处理文件的正确方法是:
with open("pickletest.pickle", "wb") as f:
pickle.dump(messageToSend, f)
因此即使在处理过程中出现错误,它也会在 with
块结束时自动关闭文件。
给出的其他答案仅在某些 Python 实现中有效,因为它依赖于垃圾收集器关闭文件。这是非常不可靠且容易出错的。处理任何需要关闭的内容时始终使用 with
。