在getPickle.py在
import pickle
import subprocess
cmd = ['rsh', 'host1', 'sendPickle.py']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
results = pickle.load(stdout)
print results
在sendPickle.py在
^{pr2}$输出:
File "getPickle" line 10, in <module>
results = pickle.load(stdout)
AttributeError: 'str' object has no attribute 'readline'
我该怎么做才能从stdout拿回pickle?在
谢谢你
@user4815162342给出了正确答案。为了清楚地说明这一点,下面的示例代码演示了如何检索pickled对象。在
注意,将
dump
和loads
配对有点不寻常,但这就是p.communicate
从stdout返回字符串时需要做的事情。在使用
pickle.loads
从字符串加载pickle。pickle.load
用于从流中加载。在两个无关的评论:
如果您使用的是python2,您可能希望
import cPickle as pickle
,因为C版本的速度要快很多倍,而且功能也一样强大。除非您特别希望支持旧的Python版本,否则最好在dump端使用
protocol=-1
,以便指定最新的Pickle协议,这比默认的最低/最旧版本更有效。相关问题 更多 >
编程相关推荐