Python 以有效的方式将类读写到文件中

Python 以有效的方式将类读写到文件中,python,file,io,Python,File,Io,我想用python将类保存到一个文件中。 我想要这样的东西,我在Python中有类似的类,像这个C++结构:< /P> struct WebSites { char SiteName[100]; int Rank; }; 我想写这样的东西: void write_to_binary_file(WebSites p_Data) { fstream binary_file("c:\\test.dat",ios::out|ios:

我想用python将类保存到一个文件中。 我想要这样的东西,我在Python中有类似的类,像这个C++结构:< /P>
   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();
 }
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
void write_to_binary_文件(网站p_数据)
{
fstream二进制文件(“c:\\test.dat”,ios::out | ios::binary | ios::app);
binary_file.write(reinterpret_cast(&p_数据),sizeof(网站));
二进制文件.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;

     }
void从二进制文件()读取
{
网站p_数据;
fstream二进制文件(“c:\\test.dat”,ios::binary | ios::in);
binary_file.read(reinterpret_cast(&p_数据),sizeof(网站));
二进制文件.close();
coutPython具有可用于序列化对象的-模块。如果您使用的协议版本>=1,则数据将序列化为二进制格式。您可以像这样使用pickle:

 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();
 }
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对象的定义。

我不太清楚您的意思,但我想您可能正在寻找Python的Pickle--将任何python对象(包括类)写入文件。