Changing Lutz's mydir from Edition 2, Learning Python
W. eWatson
wolftracks at invalid.com
Sun Jan 17 15:11:04 EST 2010
See Subject. The code is below with a few changes I made at the bottom
by inserting
import string
import numpy
module = raw_input("Enter module name: ")
listing(module)
I thought I'd see if I could convert this to a program instead, which
asks the user for the module.
As prompt entry, it was meant to do this, for example:
import math
import pynum
mydir.listing(numpy)
As below, it fails with:
Is it possible to get this to work?
Enter module name: numpy
------------------------------
name:
Traceback (most recent call last):
File
"C:/Sandia_Meteors/Sentinel_Development/Learn_Python/mydir_pgm.py", line
31, in <module>
listing(module)
File
"C:/Sandia_Meteors/Sentinel_Development/Learn_Python/mydir_pgm.py", line
8, in listing
print "name:", module.__name__, "file:", module.__file__
AttributeError: 'str' object has no attribute '__name__
============================mydir start===========
# a module that lists the namespaces of other modules
verbose = 1
def listing(module):
if verbose:
print "-"*30
print "name:", module.__name__, "file:", module.__file__
print "-"*30
count = 0
for attr in module.__dict__.keys(): # scan namespace
print "%02d) %s" % (count, attr),
if attr[0:2] == "__":
print "<built-in name>" # skip __file__, etc.
else:
print getattr(module, attr) # same as .__dict__[attr]
count = count+1
if verbose:
print "-"*30
print module.__name__, "has %d names" % count
print "-"*30
if __name__ == "__main__":
import mydir
import string
import numpy
module = raw_input("Enter module name: ")
listing(module)
#listing(mydir) # self-test code: list myself
===================end==========
More information about the Python-list
mailing list