blob: 36a61a5177a77bcd51249d0e5bc2319837c8923a [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
222 Normalize a pathname. This collapses redundant separators and up-level
Georg Brandl353ebce2010-08-02 19:19:26 +0000223 references so that ``A//B``, ``A/B/``, ``A/./B`` and ``A/foo/../B`` all become
224 ``A/B``.
225
Georg Brandl116aa622007-08-15 14:28:22 +0000226 It does not normalize the case (use :func:`normcase` for that). On Windows, it
227 converts forward slashes to backward slashes. It should be understood that this
228 may change the meaning of the path if it contains symbolic links!
229
230
231.. function:: realpath(path)
232
233 Return the canonical path of the specified filename, eliminating any symbolic
234 links encountered in the path (if they are supported by the operating system).
235
Georg Brandl116aa622007-08-15 14:28:22 +0000236
Georg Brandl18244152009-09-02 20:34:52 +0000237.. function:: relpath(path, start=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000238
239 Return a relative filepath to *path* either from the current directory or from
240 an optional *start* point.
241
Benjamin Petersonf650e462010-05-06 23:03:05 +0000242 *start* defaults to :attr:`os.curdir`.
243
Antoine Pitrouf10f1622010-12-12 20:17:29 +0000244 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Georg Brandl116aa622007-08-15 14:28:22 +0000246
247.. function:: samefile(path1, path2)
248
Brian Curtind40e6f72010-07-08 21:39:08 +0000249 Return ``True`` if both pathname arguments refer to the same file or directory.
250 On Unix, this is determined by the device number and i-node number and raises an
251 exception if a :func:`os.stat` call on either pathname fails.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000252
Brian Curtind40e6f72010-07-08 21:39:08 +0000253 On Windows, two files are the same if they resolve to the same final path
Brian Curtinc7395692010-07-09 15:15:09 +0000254 name using the Windows API call GetFinalPathNameByHandle. This function
Brian Curtind40e6f72010-07-08 21:39:08 +0000255 raises an exception if handles cannot be obtained to either file.
256
Antoine Pitrouf10f1622010-12-12 20:17:29 +0000257 Availability: Unix, Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000258
Georg Brandlb3823372010-07-10 08:58:37 +0000259 .. versionchanged:: 3.2
260 Added Windows support.
Brian Curtinc7395692010-07-09 15:15:09 +0000261
Georg Brandl116aa622007-08-15 14:28:22 +0000262
263.. function:: sameopenfile(fp1, fp2)
264
265 Return ``True`` if the file descriptors *fp1* and *fp2* refer to the same file.
Benjamin Petersonf650e462010-05-06 23:03:05 +0000266
Brian Curtin62857742010-09-06 17:07:27 +0000267 Availability: Unix, Windows.
268
Georg Brandl61063cc2012-06-24 22:48:30 +0200269 .. versionchanged:: 3.2
270 Added Windows support.
Georg Brandl116aa622007-08-15 14:28:22 +0000271
272
273.. function:: samestat(stat1, stat2)
274
275 Return ``True`` if the stat tuples *stat1* and *stat2* refer to the same file.
276 These structures may have been returned by :func:`fstat`, :func:`lstat`, or
277 :func:`stat`. This function implements the underlying comparison used by
Benjamin Petersonf650e462010-05-06 23:03:05 +0000278 :func:`samefile` and :func:`sameopenfile`.
279
280 Availability: Unix.
Georg Brandl116aa622007-08-15 14:28:22 +0000281
282
283.. function:: split(path)
284
Georg Brandl539c1652010-10-14 06:46:08 +0000285 Split the pathname *path* into a pair, ``(head, tail)`` where *tail* is the
286 last pathname component and *head* is everything leading up to that. The
287 *tail* part will never contain a slash; if *path* ends in a slash, *tail*
288 will be empty. If there is no slash in *path*, *head* will be empty. If
289 *path* is empty, both *head* and *tail* are empty. Trailing slashes are
290 stripped from *head* unless it is the root (one or more slashes only). In
291 all cases, ``join(head, tail)`` returns a path to the same location as *path*
Chris Jerdonek0b502ff2012-11-25 20:38:01 -0800292 (but the strings may differ). Also see the functions :func:`dirname` and
293 :func:`basename`.
Georg Brandl116aa622007-08-15 14:28:22 +0000294
295
296.. function:: splitdrive(path)
297
298 Split the pathname *path* into a pair ``(drive, tail)`` where *drive* is either
Mark Hammond5a607a32009-05-06 08:04:54 +0000299 a mount point or the empty string. On systems which do not use drive
Georg Brandl116aa622007-08-15 14:28:22 +0000300 specifications, *drive* will always be the empty string. In all cases, ``drive
301 + tail`` will be the same as *path*.
302
Mark Hammond5a607a32009-05-06 08:04:54 +0000303 On Windows, splits a pathname into drive/UNC sharepoint and relative path.
304
305 If the path contains a drive letter, drive will contain everything
306 up to and including the colon.
307 e.g. ``splitdrive("c:/dir")`` returns ``("c:", "/dir")``
308
309 If the path contains a UNC path, drive will contain the host name
310 and share, up to but not including the fourth separator.
311 e.g. ``splitdrive("//host/computer/dir")`` returns ``("//host/computer", "/dir")``
312
Georg Brandl116aa622007-08-15 14:28:22 +0000313
314.. function:: splitext(path)
315
316 Split the pathname *path* into a pair ``(root, ext)`` such that ``root + ext ==
317 path``, and *ext* is empty or begins with a period and contains at most one
318 period. Leading periods on the basename are ignored; ``splitext('.cshrc')``
319 returns ``('.cshrc', '')``.
320
Georg Brandl116aa622007-08-15 14:28:22 +0000321
322.. function:: splitunc(path)
323
Mark Hammond5a607a32009-05-06 08:04:54 +0000324 .. deprecated:: 3.1
325 Use *splitdrive* instead.
326
Georg Brandl116aa622007-08-15 14:28:22 +0000327 Split the pathname *path* into a pair ``(unc, rest)`` so that *unc* is the UNC
328 mount point (such as ``r'\\host\mount'``), if present, and *rest* the rest of
329 the path (such as ``r'\path\file.ext'``). For paths containing drive letters,
Benjamin Petersonf650e462010-05-06 23:03:05 +0000330 *unc* will always be the empty string.
331
332 Availability: Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000333
334
Georg Brandl116aa622007-08-15 14:28:22 +0000335.. data:: supports_unicode_filenames
336
337 True if arbitrary Unicode strings can be used as file names (within limitations
Victor Stinnerb55e4982010-09-11 00:22:12 +0000338 imposed by the file system).