pythonic way to free resources

Skip Montanaro skip at
Wed Aug 14 20:30:44 CEST 2002

    Chirayu> I'm from the C++ world. I'm used to writing code like this.

    Chirayu> // some block of code - could be try/catch, func body, loop body, etc
    Chirayu> {
    Chirayu>      ifstream inp (inFIle, ios::read | ios::binary)
    Chirayu>      ofstream out (outFIle, ios::write | ios::binary)
    Chirayu>      ......
    Chirayu>      use inp and out
    Chirayu>      .......
    Chirayu> }
    Chirayu> What is the python idiom to do something like this?

In Python, you'd use try/finally.  Something like

    dbconn = self.db_pool.get()
        c = dbconn.cursor()
        c.execute("select ...")
        for row in c.fetchall():

In the case of local file objects you don't need to use try/finally however.
When a name goes out of scope the reference count of the object who which it
refers is decremented, and if it reaches zero the object is reclaimed.  That
would hold true in this case if inFIle was opened successfully but outFIle
was not.  (Interesting studly caps by the way... ;-)

Skip Montanaro
skip at

More information about the Python-list mailing list