2 回答
TA贡献1794条经验 获得超7个赞
你使用了错误的方法。pickle.dumps产生一个字符串并且不接受文件参数。实际上,您应该从该代码中得到一个异常:
TypeError: an integer is required (got type _io.BufferedWriter)
如果您更改代码以使用pickle.dump它,它可以正常工作,因为这是转储到文件的正确方法。这是一个演示它工作的示例(不需要套接字,因为这是关于如何pickle工作,而不是关于网络)。
import pickle
foo = b'Some test string'
print("Pickling string '{}'".format(foo))
with open("/tmp/test.pickle", "wb") as tfile:
pickle.dump(foo, tfile)
with open("/tmp/test.pickle", "rb") as tfile:
bar = pickle.load(tfile)
print("Reloaded string '{}'".format(bar))
# Confirm they're identical
assert foo == bar
TA贡献1806条经验 获得超5个赞
这里:
while True:
msg = con.recv(4096)
if not msg: break
print(msg)
with open(filename, 'wb') as f:
pickle.dumps(msg, f)
当且仅当 到达打开文件的代码bool(msg) is False,因为这是while True循环终止的时间,如下所述:if not msg: break。
所以msg == '',最后你写的是空字符串
添加回答
举报