[Python-3000] please keep open() as a builtin, and general concerns about Py3k complexity

Steve Howell showell30 at yahoo.com
Wed May 23 07:45:15 CEST 2007


--- Neal Norwitz <nnorwitz at gmail.com> wrote:

> On 5/22/07, Steve Howell <showell30 at yahoo.com>
> wrote:
> >
> > In the system I've worked on for the last three
> years,
> > we have at least 200 calls to the builtin open()
> > method.
> 
> This number is meaningless by itself.  200 calls in
> how many lines of code?
> How many files total and how many files use open?
> 
> I'm not sure if the numbers are useful, but if it's
> only used in 0.1%
> of the modules, that's not a strong case for keeping
> it.
> 

17.7% of the files I searched have calls to open().

980 source files
174 files call open()
242898 lines of code
305 calls to open()

This is the quick and dirty Python code to compute
these stats, which has a call to the open() builtin.


    import os
    fns = []
    for dir in ('/ts-qa51', '/ars-qa12', '/is-qa7'):
        cmd = "cd %s && find . -name '*.py'" % dir
        output = os.popen(cmd).readlines()
        fns += [os.path.join(dir, line[2:]) for
                line in output]
        fns = [fn.strip() for fn in fns]

    numSourceFiles = len(fns)
    print '%d source files' % numSourceFiles
    loc = 0
    filesWithBuiltin = 0
    openLines = 0
    for fn in fns:
        fn = fn.strip()
        lines = open(fn).readlines()
        loc += len(lines)
        hasBuiltin = False
        for line in lines:
            if ' open(' in line:
                hasBuiltin = True
                openLines += 1
        if hasBuiltin:
            filesWithBuiltin += 1

    print '%d files call open()' % filesWithBuiltin
    print '%d lines of code' % loc
    print '%d calls to open()' % openLines



       
____________________________________________________________________________________Get the Yahoo! toolbar and be alerted to new email wherever you're surfing.
http://new.toolbar.yahoo.com/toolbar/features/mail/index.php


More information about the Python-3000 mailing list