blob: dd3ac853411739feed5d33ecbfc2fdf661dd1903 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`os.path` --- Common pathname manipulations
2================================================
3
4.. module:: os.path
5 :synopsis: Operations on pathnames.
6
Georg Brandl116aa622007-08-15 14:28:22 +00007.. index:: single: path; operations
8
9This module implements some useful functions on pathnames. To read or
10write files see :func:`open`, and for accessing the filesystem see the
Martin v. Löwis651423c2008-10-07 07:03:04 +000011:mod:`os` module. The path parameters can be passed as either strings,
12or bytes. Applications are encouraged to represent file names as
13(Unicode) character strings. Unfortunately, some file names may not be
14representable as strings on Unix, so applications that need to support
15arbitrary file names on Unix should use bytes objects to represent
16path names. Vice versa, using bytes objects cannot represent all file
17names on Windows (in the standard ``mbcs`` encoding), hence Windows
18applications should use string objects to access all files.
Georg Brandl116aa622007-08-15 14:28:22 +000019
R David Murraya4e700c2013-01-06 16:13:10 -050020Unlike a unix shell, Python does not do any *automatic* path expansions.
21Functions such as :func:`expanduser` and :func:`expandvars` can be invoked
22explicitly when an application desires shell-like path expansion. (See also
23the :mod:`glob` module.)
24
Georg Brandl76e55382008-10-08 16:34:57 +000025.. note::
26
27 All of these functions accept either only bytes or only string objects as
28 their parameters. The result is an object of the same type, if a path or
29 file name is returned.
30
Georg Brandl116aa622007-08-15 14:28:22 +000031
Benjamin Petersond23f8222009-04-05 19:13:16 +000032.. note::
33
34 Since different operating systems have different path name conventions, there
35 are several versions of this module in the standard library. The
36 :mod:`os.path` module is always the path module suitable for the operating
37 system Python is running on, and therefore usable for local paths. However,
38 you can also import and use the individual modules if you want to manipulate
39 a path that is *always* in one of the different formats. They all have the
40 same interface:
41
42 * :mod:`posixpath` for UNIX-style paths
43 * :mod:`ntpath` for Windows paths
44 * :mod:`macpath` for old-style MacOS paths
45 * :mod:`os2emxpath` for OS/2 EMX paths
46
47
Georg Brandl116aa622007-08-15 14:28:22 +000048.. function:: abspath(path)
49
50 Return a normalized absolutized version of the pathname *path*. On most
Chris Jerdonek0b502ff2012-11-25 20:38:01 -080051 platforms, this is equivalent to calling the function :func:`normpath` as
52 follows: ``normpath(join(os.getcwd(), path))``.
Georg Brandl116aa622007-08-15 14:28:22 +000053
Georg Brandl116aa622007-08-15 14:28:22 +000054
55.. function:: basename(path)
56
Chris Jerdonek0b502ff2012-11-25 20:38:01 -080057 Return the base name of pathname *path*. This is the second element of the
58 pair returned by passing *path* to the function :func:`split`. Note that
59 the result of this function is different
Georg Brandl116aa622007-08-15 14:28:22 +000060 from the Unix :program:`basename` program; where :program:`basename` for
61 ``'/foo/bar/'`` returns ``'bar'``, the :func:`basename` function returns an
62 empty string (``''``).
63
64
65.. function:: commonprefix(list)
66
67 Return the longest path prefix (taken character-by-character) that is a prefix
68 of all paths in *list*. If *list* is empty, return the empty string (``''``).
69 Note that this may return invalid paths because it works a character at a time.
70
71
72.. function:: dirname(path)
73
Chris Jerdonek0b502ff2012-11-25 20:38:01 -080074 Return the directory name of pathname *path*. This is the first element of
75 the pair returned by passing *path* to the function :func:`split`.
Georg Brandl116aa622007-08-15 14:28:22 +000076
77
78.. function:: exists(path)
79
Richard Oudkerk2240ac12012-07-06 12:05:32 +010080 Return ``True`` if *path* refers to an existing path or an open
81 file descriptor. Returns ``False`` for broken symbolic links. On
82 some platforms, this function may return ``False`` if permission is
83 not granted to execute :func:`os.stat` on the requested file, even
Georg Brandl116aa622007-08-15 14:28:22 +000084 if the *path* physically exists.
85
Richard Oudkerk2240ac12012-07-06 12:05:32 +010086 .. versionchanged:: 3.3
87 *path* can now be an integer: ``True`` is returned if it is an
88 open file descriptor, ``False`` otherwise.
89
Georg Brandl116aa622007-08-15 14:28:22 +000090
91.. function:: lexists(path)
92
93 Return ``True`` if *path* refers to an existing path. Returns ``True`` for
94 broken symbolic links. Equivalent to :func:`exists` on platforms lacking
95 :func:`os.lstat`.
96
Georg Brandl116aa622007-08-15 14:28:22 +000097
98.. function:: expanduser(path)
99
100 On Unix and Windows, return the argument with an initial component of ``~`` or
101 ``~user`` replaced by that *user*'s home directory.
102
103 .. index:: module: pwd
104
105 On Unix, an initial ``~`` is replaced by the environment variable :envvar:`HOME`
106 if it is set; otherwise the current user's home directory is looked up in the
107 password directory through the built-in module :mod:`pwd`. An initial ``~user``
108 is looked up directly in the password directory.
109
110 On Windows, :envvar:`HOME` and :envvar:`USERPROFILE` will be used if set,
111 otherwise a combination of :envvar:`HOMEPATH` and :envvar:`HOMEDRIVE` will be
112 used. An initial ``~user`` is handled by stripping the last directory component
113 from the created user path derived above.
114
115 If the expansion fails or if the path does not begin with a tilde, the path is
116 returned unchanged.
117
118
119.. function:: expandvars(path)
120
121 Return the argument with environment variables expanded. Substrings of the form
122 ``$name`` or ``${name}`` are replaced by the value of environment variable
123 *name*. Malformed variable names and references to non-existing variables are
124 left unchanged.
125
126 On Windows, ``%name%`` expansions are supported in addition to ``$name`` and
127 ``${name}``.
128
129
130.. function:: getatime(path)
131
132 Return the time of last access of *path*. The return value is a number giving
133 the number of seconds since the epoch (see the :mod:`time` module). Raise
Andrew Svetlov618c2e12012-12-15 22:59:24 +0200134 :exc:`OSError` if the file does not exist or is inaccessible.
Georg Brandl116aa622007-08-15 14:28:22 +0000135
Georg Brandl55ac8f02007-09-01 13:51:09 +0000136 If :func:`os.stat_float_times` returns True, the result is a floating point
137 number.
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139
140.. function:: getmtime(path)
141
142 Return the time of last modification of *path*. The return value is a number
143 giving the number of seconds since the epoch (see the :mod:`time` module).
Andrew Svetlov618c2e12012-12-15 22:59:24 +0200144 Raise :exc:`OSError` if the file does not exist or is inaccessible.
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Georg Brandl55ac8f02007-09-01 13:51:09 +0000146 If :func:`os.stat_float_times` returns True, the result is a floating point
147 number.
Georg Brandl116aa622007-08-15 14:28:22 +0000148
149
150.. function:: getctime(path)
151
152 Return the system's ctime which, on some systems (like Unix) is the time of the
153 last change, and, on others (like Windows), is the creation time for *path*.
154 The return value is a number giving the number of seconds since the epoch (see
Andrew Svetlov618c2e12012-12-15 22:59:24 +0200155 the :mod:`time` module). Raise :exc:`OSError` if the file does not exist or
Georg Brandl116aa622007-08-15 14:28:22 +0000156 is inaccessible.
157
Georg Brandl116aa622007-08-15 14:28:22 +0000158
159.. function:: getsize(path)
160
Andrew Svetlov618c2e12012-12-15 22:59:24 +0200161 Return the size, in bytes, of *path*. Raise :exc:`OSError` if the file does
Georg Brandl116aa622007-08-15 14:28:22 +0000162 not exist or is inaccessible.
163
Georg Brandl116aa622007-08-15 14:28:22 +0000164
165.. function:: isabs(path)
166
Christian Heimesaf98da12008-01-27 15:18:18 +0000167 Return ``True`` if *path* is an absolute pathname. On Unix, that means it
168 begins with a slash, on Windows that it begins with a (back)slash after chopping
169 off a potential drive letter.
Georg Brandl116aa622007-08-15 14:28:22 +0000170
171
172.. function:: isfile(path)
173
174 Return ``True`` if *path* is an existing regular file. This follows symbolic
175 links, so both :func:`islink` and :func:`isfile` can be true for the same path.
176
177
178.. function:: isdir(path)
179
180 Return ``True`` if *path* is an existing directory. This follows symbolic
181 links, so both :func:`islink` and :func:`isdir` can be true for the same path.
182
183
184.. function:: islink(path)
185
186 Return ``True`` if *path* refers to a directory entry that is a symbolic link.
187 Always ``False`` if symbolic links are not supported.
188
189
190.. function:: ismount(path)
191
192 Return ``True`` if pathname *path* is a :dfn:`mount point`: a point in a file
193 system where a different file system has been mounted. The function checks
194 whether *path*'s parent, :file:`path/..`, is on a different device than *path*,
195 or whether :file:`path/..` and *path* point to the same i-node on the same
196 device --- this should detect mount points for all Unix and POSIX variants.
197
198
199.. function:: join(path1[, path2[, ...]])
200
201 Join one or more path components intelligently. If any component is an absolute
202 path, all previous components (on Windows, including the previous drive letter,
203 if there was one) are thrown away, and joining continues. The return value is
204 the concatenation of *path1*, and optionally *path2*, etc., with exactly one
R David Murray24eb4bc2011-06-23 21:26:13 -0400205 directory separator (``os.sep``) following each non-empty part except the last.
206 (This means that an empty last part will result in a path that ends with a
207 separator.) Note that on Windows, since there is a current directory for
208 each drive, ``os.path.join("c:", "foo")`` represents a path relative to the
209 current directory on drive :file:`C:` (:file:`c:foo`), not :file:`c:\\foo`.
Georg Brandl116aa622007-08-15 14:28:22 +0000210
211
212.. function:: normcase(path)
213
Benjamin Petersond23f8222009-04-05 19:13:16 +0000214 Normalize the case of a pathname. On Unix and Mac OS X, this returns the
215 path unchanged; on case-insensitive filesystems, it converts the path to
216 lowercase. On Windows, it also converts forward slashes to backward slashes.
Ezio Melotti5a3ef5b2010-06-25 10:56:11 +0000217 Raise a TypeError if the type of *path* is not ``str`` or ``bytes``.
Georg Brandl116aa622007-08-15 14:28:22 +0000218
219
220.. function:: normpath(path)
221
Terry Jan Reedyec6e1322013-03-17 15:21:26 -0400222 Normalize a pathname by collapsing redundant separators and up-level
223 references so that ``A//B``, ``A/B/``, ``A/./B`` and ``A/foo/../B`` all
224 become ``A/B``. This string manipulation may change the meaning of a path
225 that contains symbolic links. On Windows, it converts forward slashes to
Terry Jan Reedyf3460412013-03-17 15:28:10 -0400226 backward slashes. To normalize case, use :func:`normcase`.
Georg Brandl116aa622007-08-15 14:28:22 +0000227
228
229.. function:: realpath(path)
230
231 Return the canonical path of the specified filename, eliminating any symbolic
232 links encountered in the path (if they are supported by the operating system).
233
Georg Brandl116aa622007-08-15 14:28:22 +0000234
Georg Brandl18244152009-09-02 20:34:52 +0000235.. function:: relpath(path, start=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000236
237 Return a relative filepath to *path* either from the current directory or from
238 an optional *start* point.
239
Benjamin Petersonf650e462010-05-06 23:03:05 +0000240 *start* defaults to :attr:`os.curdir`.
241
Antoine Pitrouf10f1622010-12-12 20:17:29 +0000242 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000243
Georg Brandl116aa622007-08-15 14:28:22 +0000244
245.. function:: samefile(path1, path2)
246
Brian Curtind40e6f72010-07-08 21:39:08 +0000247 Return ``True`` if both pathname arguments refer to the same file or directory.
248 On Unix, this is determined by the device number and i-node number and raises an
249 exception if a :func:`os.stat` call on either pathname fails.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000250
Brian Curtind40e6f72010-07-08 21:39:08 +0000251 On Windows, two files are the same if they resolve to the same final path
Brian Curtinc7395692010-07-09 15:15:09 +0000252 name using the Windows API call GetFinalPathNameByHandle. This function
Brian Curtind40e6f72010-07-08 21:39:08 +0000253 raises an exception if handles cannot be obtained to either file.
254
Antoine Pitrouf10f1622010-12-12 20:17:29 +0000255 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000256
Georg Brandlb3823372010-07-10 08:58:37 +0000257 .. versionchanged:: 3.2
258 Added Windows support.
Brian Curtinc7395692010-07-09 15:15:09 +0000259
Georg Brandl116aa622007-08-15 14:28:22 +0000260
261.. function:: sameopenfile(fp1, fp2)
262
263 Return ``True`` if the file descriptors *fp1* and *fp2* refer to the same file.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000264
Brian Curtin62857742010-09-06 17:07:27 +0000265 Availability: Unix, Windows.
266
Georg Brandl61063cc2012-06-24 22:48:30 +0200267 .. versionchanged:: 3.2
268 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +0000269
270
271.. function:: samestat(stat1, stat2)
272
273 Return ``True`` if the stat tuples *stat1* and *stat2* refer to the same file.
274 These structures may have been returned by :func:`fstat`, :func:`lstat`, or
275 :func:`stat`. This function implements the underlying comparison used by
Benjamin Petersonf650e462010-05-06 23:03:05 +0000276 :func:`samefile` and :func:`sameopenfile`.
277
278 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000279
280
281.. function:: split(path)
282
Georg Brandl539c1652010-10-14 06:46:08 +0000283 Split the pathname *path* into a pair, ``(head, tail)`` where *tail* is the
284 last pathname component and *head* is everything leading up to that. The
285 *tail* part will never contain a slash; if *path* ends in a slash, *tail*
286 will be empty. If there is no slash in *path*, *head* will be empty. If
287 *path* is empty, both *head* and *tail* are empty. Trailing slashes are
288 stripped from *head* unless it is the root (one or more slashes only). In
289 all cases, ``join(head, tail)`` returns a path to the same location as *path*
Chris Jerdonek0b502ff2012-11-25 20:38:01 -0800290 (but the strings may differ). Also see the functions :func:`dirname` and
291 :func:`basename`.
Georg Brandl116aa622007-08-15 14:28:22 +0000292
293
294.. function:: splitdrive(path)
295
296 Split the pathname *path* into a pair ``(drive, tail)`` where *drive* is either
Mark Hammond5a607a32009-05-06 08:04:54 +0000297 a mount point or the empty string. On systems which do not use drive
Georg Brandl116aa622007-08-15 14:28:22 +0000298 specifications, *drive* will always be the empty string. In all cases, ``drive
299 + tail`` will be the same as *path*.
300
Mark Hammond5a607a32009-05-06 08:04:54 +0000301 On Windows, splits a pathname into drive/UNC sharepoint and relative path.
302
303 If the path contains a drive letter, drive will contain everything
304 up to and including the colon.
305 e.g. ``splitdrive("c:/dir")`` returns ``("c:", "/dir")``
306
307 If the path contains a UNC path, drive will contain the host name
308 and share, up to but not including the fourth separator.
309 e.g. ``splitdrive("//host/computer/dir")`` returns ``("//host/computer", "/dir")``
310
Georg Brandl116aa622007-08-15 14:28:22 +0000311
312.. function:: splitext(path)
313
314 Split the pathname *path* into a pair ``(root, ext)`` such that ``root + ext ==
315 path``, and *ext* is empty or begins with a period and contains at most one
316 period. Leading periods on the basename are ignored; ``splitext('.cshrc')``
317 returns ``('.cshrc', '')``.
318
Georg Brandl116aa622007-08-15 14:28:22 +0000319
320.. function:: splitunc(path)
321
Mark Hammond5a607a32009-05-06 08:04:54 +0000322 .. deprecated:: 3.1
323 Use *splitdrive* instead.
324
Georg Brandl116aa622007-08-15 14:28:22 +0000325 Split the pathname *path* into a pair ``(unc, rest)`` so that *unc* is the UNC
326 mount point (such as ``r'\\host\mount'``), if present, and *rest* the rest of
327 the path (such as ``r'\path\file.ext'``). For paths containing drive letters,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000328 *unc* will always be the empty string.
329
330 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000331
332
Georg Brandl116aa622007-08-15 14:28:22 +0000333.. data:: supports_unicode_filenames
334
335 True if arbitrary Unicode strings can be used as file names (within limitations
Victor Stinnerb55e4982010-09-11 00:22:12 +0000336 imposed by the file system).