我正在尝试构建一个函数来将数据存储在 pickle 文件中。 我知道以这种方式使用 pickle 是有效的:
with open('x.pickle', 'wb') as f:
pickle.dump(x, f)
但我实际上想用它制作一个函数,这样我就不必一次又一次地编写它。这是我尝试过的:
def pickle_dump(x):
with open('%s.pickle'%x, 'wb') as f:
pickle.dump(x, f)
return
当我们使用“with”时,如果文件不存在,它会创建一个文件。我认为它在函数内部也可以工作,但它返回给我一个文件未找到错误。
感谢任何帮助。
最佳答案
看起来您将字符串路径名与实际对象混淆了。它们是两个不同的东西。
def pickle_dump(path, x):
"""Pickle object `x` to `path`."""
with open('%s.pickle' % path, 'wb') as f:
pickle.dump(x, f)
示例:
import pandas as pd
df = DataFrame() # the actual object you want to pickle
pickle_dump(path='files/filename', x=df)
反向执行相同的操作:
def pickle_load(path):
with open('%s.pickle' %path, 'rb') as f:
return pickle.load(f)
现在要运行它,您可以将一个变量分配给函数的返回值:
result = pickle_load('mypath/filename')
在您的评论中,您在函数体中命名了一个变量x
。但要意识到这是一个本地变量。您无法从函数外部访问它。在这种情况下,您需要 return 语句。
关于python - pickle 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46104082/