python - pickle 功能

标签 python function pickle

我正在尝试构建一个函数来将数据存储在 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/

相关文章:

c++ - c++程序如何设置python代码段可以运行的环境?

python - 将数字和字符串列表转换为单个字符串 python

使用 apache/fastcgi 的 Python/Flask 应用程序产生 500 错误

从汇编调用 C 函数、段错误

python - pickle 加载错误 "__init__() takes exactly 2 arguments (1 given)"

python - 是否可以使用 pickle 序列化某些对象并在 Python3 的其他独立模块中使用它?

python - Tornado "error: [Errno 24] Too many open files"错误

R:行名、列名、暗号和名称适用

javascript - Eloquent JavaScript 中的removeEventListener 示例

python - 有没有办法在 Windows 中不加载 Python 来查看 cPickle 或 Pickle 文件内容?