我想在python中将类保存到文件中。 我想要这样的东西,我在python中有一个类似的类,就像这个C ++结构:
struct WebSites
{
char SiteName[100];
int Rank;
};
我想写这样的东西:
void write_to_binary_file(WebSites p_Data)
{
fstream binary_file("c:\\test.dat",ios::out|ios::binary|ios::app);
binary_file.write(reinterpret_cast<char *>(&p_Data),sizeof(WebSites));
binary_file.close();
}
可以简单地通过以下方式阅读:
void read_from_binary_file()
{
WebSites p_Data;
fstream binary_file("c:\\test.dat",ios::binary|ios::in);
binary_file.read(reinterpret_cast<char *>(&p_Data),sizeof(WebSites));
binary_file.close();
cout<<p_Data.SiteName<<endl;
cout<<"Rank :"<< p_Data.Rank<<endl;
}
python中有一个方法可以做到吗?
答案 0 :(得分:8)
Python有pickle
- 模块,可用于序列化对象。如果使用协议版本&gt; = 1,则数据将序列化为二进制格式。你可以像这样使用泡菜:
class WebSites(object):
def __init__():
self.SiteName = ""
self.Rank = 0
import cPickle
# to serialize the object
with open("data.dump", "wb") as output:
cPickle.dump(WebSites(), output, cPickle.HIGHEST_PROTOCOL)
# to deserialize the object
with open("data.dump", "rb") as input:
obj = cPickle.load(input) # protocol version is auto detected
Pickle处理嵌套对象和循环以及这样的坏事,因此您可以轻松地使用它来序列化相当复杂的结构。请注意,存在一些限制,最明显的是pickle需要访问pickle对象的定义。