Robert Dailey wrote: > Hi, > > I'm trying to create a Python equivalent of the C++ "ifstream" class, > with slight behavior changes. > > Basically, I want to have a "filestream" object that will allow you to > overload the '<<' and '>>' operators to stream out and stream in data, > respectively. So far this is what I have: > > class filestream: > def __init__( self, filename ): > self.m_file = open( filename, "rwb" ) > > # def __del__( self ): > # self.m_file.close() > > def __lshift__( self, data ): > self.m_file.write( data ) > > def __rshift__( self, data ): > self.m_file.read( data ) > > > So far, I've found that unlike with the C++ version of fopen(), the > Python 'open()' call does not create the file for you when opened > using the mode 'w'. I get an exception saying that the file doesn't > exist. I expected it would create the file for me. Is there a way to > make open() create the file if it doesn't exist, or perhaps there's > another function I can use to create the file? I read the python docs, > I wasn't able to find a solution. > > Also, you might notice that my "self.m_file.read()" function is wrong, > according to the python docs at least. read() takes the number of > bytes to read, however I was not able to find a C++ equivalent of > "sizeof()" in Python. If I wanted to read in a 1 byte, 2 byte, or 4 > byte value from data into python I have no idea how I would do this. > > Any help is greatly appreciated. Thanks. >
open creates files for me, so I'm uncertain why you think it isn't for you. the .read() method accepts the number of bytes not the buffer to store bytes read. data=self.m_file.read(4) would read 4 bytes into string object pointed to by data. sizeof() in Python is len() -Larry -- http://mail.python.org/mailman/listinfo/python-list