]> granicus.if.org Git - python/commitdiff
Add getmodulename() and getmoduleinfo() routines to inspect filenames.
authorKa-Ping Yee <ping@zesty.ca>
Tue, 10 Apr 2001 11:43:00 +0000 (11:43 +0000)
committerKa-Ping Yee <ping@zesty.ca>
Tue, 10 Apr 2001 11:43:00 +0000 (11:43 +0000)
Lib/inspect.py

index eeb3034f182d7cb908dff798e67d93a8ee0a804c..140dbd12a8491760a22f8104233bca39277efa44 100644 (file)
@@ -192,6 +192,21 @@ def getfile(object):
     raise TypeError, 'arg is not a module, class, method, ' \
                      'function, traceback, frame, or code object'
 
+def getmoduleinfo(path):
+    """Get the module name, suffix, mode, and module type for a given file."""
+    filename = os.path.basename(path)
+    suffixes = map(lambda (suffix, mode, mtype):
+                   (-len(suffix), suffix, mode, mtype), imp.get_suffixes())
+    suffixes.sort() # try longest suffixes first, in case they overlap
+    for neglen, suffix, mode, mtype in suffixes:
+        if filename[neglen:] == suffix:
+            return filename[:neglen], suffix, mode, mtype
+
+def getmodulename(path):
+    """Return the module name for a given file, or None."""
+    info = getmoduleinfo(path)
+    if info: return info[0]
+
 def getsourcefile(object):
     """Return the Python source file an object was defined in, if it exists."""
     filename = getfile(object)