Mercurial > cpython-lru_cache-weakref
annotate Lib/macpath.py @ 67467:abe201dfd3dc 3.1
Merged revisions 87861,87863 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r87861 | antoine.pitrou | 2011-01-08 11:23:29 +0100 (sam., 08 janv. 2011) | 3 lines
Fix test_ssl after r87849
........
r87863 | antoine.pitrou | 2011-01-08 11:28:11 +0100 (sam., 08 janv. 2011) | 3 lines
Add EHOSTUNREACH ('No route to host') to the errnos trapped by transient_internet().
........
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Sat, 08 Jan 2011 10:31:09 +0000 |
| parents | e63d4678fca7 |
| children | 3c9232a684ae |
| rev | line source |
|---|---|
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
1 """Pathname and path-related operations for the Macintosh.""" |
| 103 | 2 |
|
7525
88992696b9e8
Instead of 'import mac', use 'import os' -- this way, the path syntax
Guido van Rossum <guido@python.org>
parents:
5576
diff
changeset
|
3 import os |
|
579
6884346c04a0
Added 'normcase' function.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
4 from stat import * |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
5 import genericpath |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
35376
diff
changeset
|
6 from genericpath import * |
| 103 | 7 |
|
16198
32755b456369
a few more modules get __all__
Skip Montanaro <skip@pobox.com>
parents:
15543
diff
changeset
|
8 __all__ = ["normcase","isabs","join","splitdrive","split","splitext", |
|
32755b456369
a few more modules get __all__
Skip Montanaro <skip@pobox.com>
parents:
15543
diff
changeset
|
9 "basename","dirname","commonprefix","getsize","getmtime", |
|
35376
e7ed0e6aed2f
Bug #1266283: lexists() is not exported from os.path
Georg Brandl <georg@python.org>
parents:
35308
diff
changeset
|
10 "getatime","getctime", "islink","exists","lexists","isdir","isfile", |
|
46770
8bfe2b06527d
Remove os.path.walk
Benjamin Peterson <benjamin@python.org>
parents:
43020
diff
changeset
|
11 "expanduser","expandvars","normpath","abspath", |
|
27897
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
12 "curdir","pardir","sep","pathsep","defpath","altsep","extsep", |
|
32302
e196b823e6c5
Feature request #935915: Add os.path.devnull.
Martin v. Löwis <martin@v.loewis.de>
parents:
28098
diff
changeset
|
13 "devnull","realpath","supports_unicode_filenames"] |
|
579
6884346c04a0
Added 'normcase' function.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
14 |
|
27897
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
15 # strings representing various path-related bits and pieces |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
16 # These are primarily for export; internally, they are hardcoded. |
|
27897
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
17 curdir = ':' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
18 pardir = '::' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
19 extsep = '.' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
20 sep = ':' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
21 pathsep = '\n' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
22 defpath = ':' |
|
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
23 altsep = None |
|
32302
e196b823e6c5
Feature request #935915: Add os.path.devnull.
Martin v. Löwis <martin@v.loewis.de>
parents:
28098
diff
changeset
|
24 devnull = 'Dev:Null' |
|
27897
cf1efca82b18
Migrate definitions of several platform-dependent path-related variables
Skip Montanaro <skip@pobox.com>
parents:
27507
diff
changeset
|
25 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
26 def _get_colon(path): |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
27 if isinstance(path, bytes): |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
28 return b':' |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
29 else: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
30 return ':' |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
31 |
|
14910
6fb2af766892
Avoid import of string module; it is only needed for expandvars().
Fred Drake <fdrake@acm.org>
parents:
14128
diff
changeset
|
32 # Normalize the case of a pathname. Dummy in Posix, but <s>.lower() here. |
|
579
6884346c04a0
Added 'normcase' function.
Guido van Rossum <guido@python.org>
parents:
559
diff
changeset
|
33 |
|
14910
6fb2af766892
Avoid import of string module; it is only needed for expandvars().
Fred Drake <fdrake@acm.org>
parents:
14128
diff
changeset
|
34 def normcase(path): |
|
6fb2af766892
Avoid import of string module; it is only needed for expandvars().
Fred Drake <fdrake@acm.org>
parents:
14128
diff
changeset
|
35 return path.lower() |
|
105
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
36 |
| 103 | 37 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
38 def isabs(s): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
39 """Return true if a path is absolute. |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
40 On the Mac, relative paths begin with a colon, |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
41 but as a special case, paths with no colons at all are also relative. |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
42 Anything else is absolute (the string up to the first colon is the |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
43 volume name).""" |
| 103 | 44 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
45 colon = _get_colon(s) |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
46 return colon in s and s[:1] != colon |
| 103 | 47 |
|
105
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
48 |
|
5133
666152b77027
join(): join one or more path components
Barry Warsaw <barry@python.org>
parents:
3793
diff
changeset
|
49 def join(s, *p): |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
50 colon = _get_colon(s) |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
51 path = s |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
52 for t in p: |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
53 if (not s) or isabs(t): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
54 path = t |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
55 continue |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
56 if t[:1] == colon: |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
57 t = t[1:] |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
58 if colon not in path: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
59 path = colon + path |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
60 if path[-1:] != colon: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
61 path = path + colon |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
62 path = path + t |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
63 return path |
| 103 | 64 |
|
105
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
65 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
66 def split(s): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
67 """Split a pathname into two parts: the directory leading up to the final |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
68 bit, and the basename (the filename, without colons, in that directory). |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
69 The result (s, t) is such that join(s, t) yields the original argument.""" |
|
105
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
70 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
71 colon = _get_colon(s) |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
72 if colon not in s: return s[:0], s |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
73 col = 0 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
74 for i in range(len(s)): |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
75 if s[i:i+1] == colon: col = i + 1 |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
76 path, file = s[:col-1], s[col:] |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
77 if path and not colon in path: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
78 path = path + colon |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
79 return path, file |
|
105
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
80 |
|
b4d5fdcbf83c
Added explanatory comments.
Guido van Rossum <guido@python.org>
parents:
103
diff
changeset
|
81 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
82 def splitext(p): |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
83 if isinstance(p, bytes): |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
84 return genericpath._splitext(p, b':', altsep, b'.') |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
85 else: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
86 return genericpath._splitext(p, sep, altsep, extsep) |
|
41554
06145fbc7ab9
Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
40450
diff
changeset
|
87 splitext.__doc__ = genericpath._splitext.__doc__ |
| 3793 | 88 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
89 def splitdrive(p): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
90 """Split a pathname into a drive specification and the rest of the |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
91 path. Useful on DOS/Windows/NT; on the Mac, the drive is always |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
92 empty (don't use the volume name -- it doesn't have the same |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
93 syntactic and semantic oddities as DOS drive letters, such as there |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
94 being a separate current directory per drive).""" |
|
2947
a980d076052d
added normpath() and splitdrive()
Guido van Rossum <guido@python.org>
parents:
2910
diff
changeset
|
95 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
96 return p[:0], p |
|
2947
a980d076052d
added normpath() and splitdrive()
Guido van Rossum <guido@python.org>
parents:
2910
diff
changeset
|
97 |
|
a980d076052d
added normpath() and splitdrive()
Guido van Rossum <guido@python.org>
parents:
2910
diff
changeset
|
98 |
|
1086
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
99 # Short interfaces to split() |
|
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
100 |
|
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
101 def dirname(s): return split(s)[0] |
|
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
102 def basename(s): return split(s)[1] |
|
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
103 |
| 27257 | 104 def ismount(s): |
|
27507
d9d57f5f98cd
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
27257
diff
changeset
|
105 if not isabs(s): |
|
d9d57f5f98cd
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
27257
diff
changeset
|
106 return False |
|
d9d57f5f98cd
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
27257
diff
changeset
|
107 components = split(s) |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
108 return len(components) == 2 and not components[1] |
|
1086
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
109 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
110 def islink(s): |
|
23220
bd08c6955e9b
Fixes based on ideas from Christopher Smith:
Jack Jansen <jack.jansen@cwi.nl>
parents:
22867
diff
changeset
|
111 """Return true if the pathname refers to a symbolic link.""" |
| 2260 | 112 |
|
23220
bd08c6955e9b
Fixes based on ideas from Christopher Smith:
Jack Jansen <jack.jansen@cwi.nl>
parents:
22867
diff
changeset
|
113 try: |
| 28098 | 114 import Carbon.File |
| 115 return Carbon.File.ResolveAliasFile(s, 0)[2] | |
|
23220
bd08c6955e9b
Fixes based on ideas from Christopher Smith:
Jack Jansen <jack.jansen@cwi.nl>
parents:
22867
diff
changeset
|
116 except: |
|
bd08c6955e9b
Fixes based on ideas from Christopher Smith:
Jack Jansen <jack.jansen@cwi.nl>
parents:
22867
diff
changeset
|
117 return False |
| 2260 | 118 |
|
33332
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
119 # Is `stat`/`lstat` a meaningful difference on the Mac? This is safe in any |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
120 # case. |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
121 |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
122 def lexists(path): |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
123 """Test whether a path exists. Returns True for broken symbolic links""" |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
124 |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
125 try: |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
126 st = os.lstat(path) |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
127 except os.error: |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
128 return False |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
129 return True |
|
062177de8685
Patch #941486: add os.path.lexists(). Also fix bug #940578 by using lexists in glob.glob.
Johannes Gijsbers <jlg@dds.nl>
parents:
32302
diff
changeset
|
130 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
131 def expandvars(path): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
132 """Dummy to retain interface-compatibility with other operating systems.""" |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
133 return path |
|
1086
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
134 |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
135 |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
136 def expanduser(path): |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
137 """Dummy to retain interface-compatibility with other operating systems.""" |
|
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
138 return path |
|
2947
a980d076052d
added normpath() and splitdrive()
Guido van Rossum <guido@python.org>
parents:
2910
diff
changeset
|
139 |
|
22704
18dccdf2c46d
Use docstrings for exception classes
Neal Norwitz <nnorwitz@gmail.com>
parents:
22702
diff
changeset
|
140 class norm_error(Exception): |
|
18dccdf2c46d
Use docstrings for exception classes
Neal Norwitz <nnorwitz@gmail.com>
parents:
22702
diff
changeset
|
141 """Path cannot be normalized""" |
|
1086
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
142 |
|
db817f3a1c65
* change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents:
770
diff
changeset
|
143 def normpath(s): |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
144 """Normalize a pathname. Will return the same result for |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
145 equivalent paths.""" |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
146 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
147 colon = _get_colon(s) |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
148 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
149 if colon not in s: |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
150 return colon + s |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
151 |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
152 comps = s.split(colon) |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
153 i = 1 |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
154 while i < len(comps)-1: |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
155 if not comps[i] and comps[i-1]: |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
156 if i > 1: |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
157 del comps[i-1:i+1] |
|
14910
6fb2af766892
Avoid import of string module; it is only needed for expandvars().
Fred Drake <fdrake@acm.org>
parents:
14128
diff
changeset
|
158 i = i - 1 |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
159 else: |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
160 # best way to handle this is to raise an exception |
|
43020
907a45df1295
Raise statement normalization in Lib/.
Collin Winter <collinw@gmail.com>
parents:
41554
diff
changeset
|
161 raise norm_error('Cannot use :: immediately after volume name') |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
162 else: |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
163 i = i + 1 |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
164 |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
165 s = colon.join(comps) |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
166 |
|
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
167 # remove trailing ":" except for ":" and "Volume:" |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
168 if s[-1:] == colon and len(comps) > 2 and s != colon*len(s): |
|
13876
1c00fea9ae40
Rewrite of normpath() by Corran Webster, so trailing :s are removed
Jack Jansen <jack.jansen@cwi.nl>
parents:
13577
diff
changeset
|
169 s = s[:-1] |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
170 return s |
|
2910
5a2612fb6c0e
Added missing walk() function
Jack Jansen <jack.jansen@cwi.nl>
parents:
2260
diff
changeset
|
171 |
| 10018 | 172 def abspath(path): |
|
11706
b6f52c1ef6da
More trivial comment -> docstring transformations by Ka-Ping Yee,
Guido van Rossum <guido@python.org>
parents:
11137
diff
changeset
|
173 """Return an absolute path.""" |
| 10018 | 174 if not isabs(path): |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
175 if isinstance(path, bytes): |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
176 cwd = os.getcwdb() |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
177 else: |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
178 cwd = os.getcwd() |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
179 path = join(cwd, path) |
| 10018 | 180 return normpath(path) |
|
19934
f2f25a738f7f
SF patch #461781 by Chris Lawrence: os.path.realpath - Resolve symlinks:
Guido van Rossum <guido@python.org>
parents:
19080
diff
changeset
|
181 |
|
f2f25a738f7f
SF patch #461781 by Chris Lawrence: os.path.realpath - Resolve symlinks:
Guido van Rossum <guido@python.org>
parents:
19080
diff
changeset
|
182 # realpath is a no-op on systems without islink support |
|
23220
bd08c6955e9b
Fixes based on ideas from Christopher Smith:
Jack Jansen <jack.jansen@cwi.nl>
parents:
22867
diff
changeset
|
183 def realpath(path): |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
184 path = abspath(path) |
|
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
185 try: |
| 28098 | 186 import Carbon.File |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
187 except ImportError: |
|
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
188 return path |
|
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
189 if not path: |
|
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
190 return path |
|
49414
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
191 colon = _get_colon(path) |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
192 components = path.split(colon) |
|
16a194da77de
Issue3187 for Macintosh platform:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
46770
diff
changeset
|
193 path = components[0] + colon |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
194 for c in components[1:]: |
|
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
195 path = join(path, c) |
|
60063
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
196 try: |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
197 path = Carbon.File.FSResolveAliasFile(path, 1)[0].as_pathname() |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
198 except Carbon.File.Error: |
|
e63d4678fca7
Note: only the relevant parts of r79474 are merged.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
49414
diff
changeset
|
199 pass |
|
23521
a90faa5f9417
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
23237
diff
changeset
|
200 return path |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
23625
diff
changeset
|
201 |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
23625
diff
changeset
|
202 supports_unicode_filenames = False |
