comparison venv/lib/python2.7/genericpath.py @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d67268158946
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 try:
14 _unicode = unicode
15 except NameError:
16 # If Python is built without Unicode support, the unicode type
17 # will not exist. Fake one.
18 class _unicode(object):
19 pass
20
21 # Does a path exist?
22 # This is false for dangling symbolic links on systems that support them.
23 def exists(path):
24 """Test whether a path exists. Returns False for broken symbolic links"""
25 try:
26 os.stat(path)
27 except os.error:
28 return False
29 return True
30
31
32 # This follows symbolic links, so both islink() and isdir() can be true
33 # for the same path on systems that support symlinks
34 def isfile(path):
35 """Test whether a path is a regular file"""
36 try:
37 st = os.stat(path)
38 except os.error:
39 return False
40 return stat.S_ISREG(st.st_mode)
41
42
43 # Is a path a directory?
44 # This follows symbolic links, so both islink() and isdir()
45 # can be true for the same path on systems that support symlinks
46 def isdir(s):
47 """Return true if the pathname refers to an existing directory."""
48 try:
49 st = os.stat(s)
50 except os.error:
51 return False
52 return stat.S_ISDIR(st.st_mode)
53
54
55 def getsize(filename):
56 """Return the size of a file, reported by os.stat()."""
57 return os.stat(filename).st_size
58
59
60 def getmtime(filename):
61 """Return the last modification time of a file, reported by os.stat()."""
62 return os.stat(filename).st_mtime
63
64
65 def getatime(filename):
66 """Return the last access time of a file, reported by os.stat()."""
67 return os.stat(filename).st_atime
68
69
70 def getctime(filename):
71 """Return the metadata change time of a file, reported by os.stat()."""
72 return os.stat(filename).st_ctime
73
74
75 # Return the longest prefix of all list elements.
76 def commonprefix(m):
77 "Given a list of pathnames, returns the longest common leading component"
78 if not m: return ''
79 s1 = min(m)
80 s2 = max(m)
81 for i, c in enumerate(s1):
82 if c != s2[i]:
83 return s1[:i]
84 return s1
85
86 # Split a path in root and extension.
87 # The extension is everything starting at the last dot in the last
88 # pathname component; the root is everything before that.
89 # It is always true that root + ext == p.
90
91 # Generic implementation of splitext, to be parametrized with
92 # the separators
93 def _splitext(p, sep, altsep, extsep):
94 """Split the extension from a pathname.
95
96 Extension is everything from the last dot to the end, ignoring
97 leading dots. Returns "(root, ext)"; ext may be empty."""
98
99 sepIndex = p.rfind(sep)
100 if altsep:
101 altsepIndex = p.rfind(altsep)
102 sepIndex = max(sepIndex, altsepIndex)
103
104 dotIndex = p.rfind(extsep)
105 if dotIndex > sepIndex:
106 # skip all leading dots
107 filenameIndex = sepIndex + 1
108 while filenameIndex < dotIndex:
109 if p[filenameIndex] != extsep:
110 return p[:dotIndex], p[dotIndex:]
111 filenameIndex += 1
112
113 return p, ''