[Tutor] [Fwd: Re: Find files without __doc__ strings]
Lie Ryan
lie.1296 at gmail.com
Tue May 19 07:38:49 CEST 2009
David wrote:
>
> ------------------------------------------------------------------------
>
> Subject:
> Re: [Tutor] Find files without __doc__ strings
> From:
> David <david at abbottdavid.com>
> Date:
> Mon, 18 May 2009 14:02:38 -0400
>
> CC:
> tutor at python.org
>
>
> Lie Ryan wrote:
>> David wrote:
>>> spir wrote:
>>>> Le Sat, 16 May 2009 21:46:02 -0400,
>>>> David <david at abbottdavid.com> s'exprima ainsi:
>>>>
>>>>> I am doing an exercise in Wesley Chun's book. Find files in the
>>>>> standard library modules that have doc strings. Then find the
>>>>> ones that don't, "the shame list". I came up with this to find the
>>>>> ones with;
>> why not __import__() it then test whether its .__doc__ is None?
>>
>> def test(filename):
>> if __import__(filename).__doc__ is None:
>> shame_list.append(filename)
>> else:
>> fame_list.append(filename)
>>
> Thanks Spir and Lie,
> How about;
>
> #!/usr/bin/python
>
> import os
> import glob
> import os.path
>
> shame_list = []
> fame_list = []
> pypath = "/usr/lib/python2.5/"
>
> def grab_files():
> fnames = glob.glob(os.path.join(pypath, '*.py'))
> fnames.sort()
> sendall(fnames)
>
> def sendall(fnames):
> for filename in fnames:
> filename = os.path.split(filename)
> filename = filename[1]
> filename = os.path.splitext(filename)
> filename = filename[0]
> test(filename)
>
>
> def test(filename):
> try:
> if __import__(filename).__doc__ is None:
> shame_list.append(filename)
> else:
> fame_list.append(filename)
> except ImportError:
> pass
>
> grab_files()
> print 'Shame List: ', shame_list
>
> How can I do;
> def sendall(fnames):
> [snip]
> More efficient.
I don't know about being "more efficient" but using os.path.basename()
can save one step:
filename = os.path.splitext(os.path.basename(filename))[0]
and you may try to use os.path.walk() for your grab_files().
os.path.walk will walk recursively through subdirectories and grabs
other stdlib packages you may have missed (note: although it also grabs
non standard-lib packages; note: you also cannot use glob with it; these
are tradeoffs, so find out which is easier for you)
Also in this code:
> def test(filename):
> try:
> if __import__(filename).__doc__ is None:
> shame_list.append(filename)
> else:
> fame_list.append(filename)
> except ImportError:
> pass
avoid globals...
More information about the Tutor
mailing list