symbian-qemu-0.9.1-12/python-2.6.1/Lib/genericpath.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """
       
     2 Path operations common to more than one OS
       
     3 Do not use directly.  The OS specific modules import the appropriate
       
     4 functions from this module themselves.
       
     5 """
       
     6 import os
       
     7 import stat
       
     8 
       
     9 __all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime',
       
    10            'getsize', 'isdir', 'isfile']
       
    11 
       
    12 
       
    13 # Does a path exist?
       
    14 # This is false for dangling symbolic links on systems that support them.
       
    15 def exists(path):
       
    16     """Test whether a path exists.  Returns False for broken symbolic links"""
       
    17     try:
       
    18         st = os.stat(path)
       
    19     except os.error:
       
    20         return False
       
    21     return True
       
    22 
       
    23 
       
    24 # This follows symbolic links, so both islink() and isdir() can be true
       
    25 # for the same path ono systems that support symlinks
       
    26 def isfile(path):
       
    27     """Test whether a path is a regular file"""
       
    28     try:
       
    29         st = os.stat(path)
       
    30     except os.error:
       
    31         return False
       
    32     return stat.S_ISREG(st.st_mode)
       
    33 
       
    34 
       
    35 # Is a path a directory?
       
    36 # This follows symbolic links, so both islink() and isdir()
       
    37 # can be true for the same path on systems that support symlinks
       
    38 def isdir(s):
       
    39     """Return true if the pathname refers to an existing directory."""
       
    40     try:
       
    41         st = os.stat(s)
       
    42     except os.error:
       
    43         return False
       
    44     return stat.S_ISDIR(st.st_mode)
       
    45 
       
    46 
       
    47 def getsize(filename):
       
    48     """Return the size of a file, reported by os.stat()."""
       
    49     return os.stat(filename).st_size
       
    50 
       
    51 
       
    52 def getmtime(filename):
       
    53     """Return the last modification time of a file, reported by os.stat()."""
       
    54     return os.stat(filename).st_mtime
       
    55 
       
    56 
       
    57 def getatime(filename):
       
    58     """Return the last access time of a file, reported by os.stat()."""
       
    59     return os.stat(filename).st_atime
       
    60 
       
    61 
       
    62 def getctime(filename):
       
    63     """Return the metadata change time of a file, reported by os.stat()."""
       
    64     return os.stat(filename).st_ctime
       
    65 
       
    66 
       
    67 # Return the longest prefix of all list elements.
       
    68 def commonprefix(m):
       
    69     "Given a list of pathnames, returns the longest common leading component"
       
    70     if not m: return ''
       
    71     s1 = min(m)
       
    72     s2 = max(m)
       
    73     for i, c in enumerate(s1):
       
    74         if c != s2[i]:
       
    75             return s1[:i]
       
    76     return s1
       
    77 
       
    78 # Split a path in root and extension.
       
    79 # The extension is everything starting at the last dot in the last
       
    80 # pathname component; the root is everything before that.
       
    81 # It is always true that root + ext == p.
       
    82 
       
    83 # Generic implementation of splitext, to be parametrized with
       
    84 # the separators
       
    85 def _splitext(p, sep, altsep, extsep):
       
    86     """Split the extension from a pathname.
       
    87 
       
    88     Extension is everything from the last dot to the end, ignoring
       
    89     leading dots.  Returns "(root, ext)"; ext may be empty."""
       
    90 
       
    91     sepIndex = p.rfind(sep)
       
    92     if altsep:
       
    93         altsepIndex = p.rfind(altsep)
       
    94         sepIndex = max(sepIndex, altsepIndex)
       
    95 
       
    96     dotIndex = p.rfind(extsep)
       
    97     if dotIndex > sepIndex:
       
    98         # skip all leading dots
       
    99         filenameIndex = sepIndex + 1
       
   100         while filenameIndex < dotIndex:
       
   101             if p[filenameIndex] != extsep:
       
   102                 return p[:dotIndex], p[dotIndex:]
       
   103             filenameIndex += 1
       
   104 
       
   105     return p, ''