2017-08-16 53 views
0
with open('data', 'w') as f: 
    pickle.dumps({'foo':111},f) 

结果泡菜错误 - 整数需要

an integer is required (got type _io.TextIOWrapper) 

我该如何解决这个问题?

我很肯定An integer is required? open()事先没有被调用。 Python版本是3.6.2

+1

[dumps'的第二个参数是_'protocol'_](https://docs.python.org/3/library/pickle.html#pickle.dumps)。你是不是指'pickle.dumps({'foo':111},f)'? –

回答

1

pickle.dumps转储obj到它返回的字符串中。为了写入文件,您可能需要使用pickle.dump(不含s)。

with open('data', 'wb') as f: 
    pickle.dump({'foo':111}, f) 

另外,你也应该以二进制模式打开文件,因为pickle.dump会写二进制数据。

+0

我刚刚编辑的答案提到打开文件时的二进制模式。 –