blob: 86b5a3453209340b055aff5be6d7c567f6fda299 [file] [log] [blame]
Fred Drake3a0351c1998-04-04 07:23:21 +00001\section{Standard Module \module{posixpath}}
Guido van Rossume47da0a1997-07-17 16:34:52 +00002\label{module-posixpath}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00003\stmodindex{posixpath}
Guido van Rossum470be141995-03-17 16:07:09 +00004
Fred Drake65b32f71998-02-09 20:27:12 +00005This module implements some useful functions on \POSIX{} pathnames.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00006
Guido van Rossum470be141995-03-17 16:07:09 +00007\strong{Do not import this module directly.} Instead, import the
Fred Drakedb9693e1998-03-11 05:50:42 +00008module \module{os} and use \code{os.path}.
Fred Drake54820dc1997-12-15 21:56:05 +00009\refstmodindex{os}
Guido van Rossum470be141995-03-17 16:07:09 +000010
Guido van Rossum470be141995-03-17 16:07:09 +000011
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000012\begin{funcdesc}{basename}{p}
13Return the base name of pathname
14\var{p}.
15This is the second half of the pair returned by
16\code{posixpath.split(\var{p})}.
17\end{funcdesc}
18
19\begin{funcdesc}{commonprefix}{list}
20Return the longest string that is a prefix of all strings in
21\var{list}.
22If
23\var{list}
24is empty, return the empty string (\code{''}).
25\end{funcdesc}
26
27\begin{funcdesc}{exists}{p}
28Return true if
29\var{p}
30refers to an existing path.
31\end{funcdesc}
32
33\begin{funcdesc}{expanduser}{p}
34Return the argument with an initial component of \samp{\~} or
35\samp{\~\var{user}} replaced by that \var{user}'s home directory. An
36initial \samp{\~{}} is replaced by the environment variable \code{\${}HOME};
37an initial \samp{\~\var{user}} is looked up in the password directory through
Fred Drakedb9693e1998-03-11 05:50:42 +000038the built-in module \module{pwd}\refbimodindex{pwd}. If the expansion
39fails, or if the path does not begin with a tilde, the path is
40returned unchanged.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000041\end{funcdesc}
42
Guido van Rossum17383111994-04-21 10:32:28 +000043\begin{funcdesc}{expandvars}{p}
44Return the argument with environment variables expanded. Substrings
45of the form \samp{\$\var{name}} or \samp{\$\{\var{name}\}} are
46replaced by the value of environment variable \var{name}. Malformed
47variable names and references to non-existing variables are left
48unchanged.
49\end{funcdesc}
50
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000051\begin{funcdesc}{isabs}{p}
52Return true if \var{p} is an absolute pathname (begins with a slash).
53\end{funcdesc}
54
55\begin{funcdesc}{isfile}{p}
56Return true if \var{p} is an existing regular file. This follows
Fred Drakedb9693e1998-03-11 05:50:42 +000057symbolic links, so both \function{islink()} and \function{isfile()}
58can be true for the same path.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000059\end{funcdesc}
60
61\begin{funcdesc}{isdir}{p}
62Return true if \var{p} is an existing directory. This follows
Fred Drakedb9693e1998-03-11 05:50:42 +000063symbolic links, so both \function{islink()} and \function{isdir()} can
64be true for the same path.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000065\end{funcdesc}
66
67\begin{funcdesc}{islink}{p}
68Return true if
69\var{p}
70refers to a directory entry that is a symbolic link.
71Always false if symbolic links are not supported.
72\end{funcdesc}
73
74\begin{funcdesc}{ismount}{p}
Guido van Rossum470be141995-03-17 16:07:09 +000075Return true if pathname \var{p} is a \dfn{mount point}: a point in a
76file system where a different file system has been mounted. The
77function checks whether \var{p}'s parent, \file{\var{p}/..}, is on a
78different device than \var{p}, or whether \file{\var{p}/..} and
79\var{p} point to the same i-node on the same device --- this should
Fred Drake65b32f71998-02-09 20:27:12 +000080detect mount points for all \UNIX{} and \POSIX{} variants.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000081\end{funcdesc}
82
Fred Drakecce10901998-03-17 06:33:25 +000083\begin{funcdesc}{join}{p\optional{, q\optional{, ...}}}
Barry Warsaw75745871997-02-18 21:53:53 +000084Joins one or more path components intelligently. If any component is
85an absolute path, all previous components are thrown away, and joining
86continues. The return value is the concatenation of \var{p}, and
87optionally \var{q}, etc., with exactly one slash (\code{'/'}) inserted
88between components, unless \var{p} is empty.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000089\end{funcdesc}
90
91\begin{funcdesc}{normcase}{p}
Guido van Rossum1931c0c1998-02-18 14:00:05 +000092Normalize the case of a pathname. On \UNIX{}, this returns the path
93unchanged; on case-insensitive filesystems, it converts the path to
94lowercase. On Windows, it also converts forward slashes to backward
95slashes.
96\end{funcdesc}
97
98\begin{funcdesc}{normpath}{p}
99Normalize a pathname. This collapses redundant separators and
100up-level references, e.g. \code{A//B}, \code{A/./B} and
101\code{A/foo/../B} all become \code{A/B}. It does not normalize the
Fred Drakedb9693e1998-03-11 05:50:42 +0000102case (use \function{normcase()} for that). On Windows, it does
103converts forward slashes to backward slashes.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000104\end{funcdesc}
105
Fred Drakecce10901998-03-17 06:33:25 +0000106\begin{funcdesc}{samefile}{p, q}
Fred Drakedb9693e1998-03-11 05:50:42 +0000107Return true if both pathname arguments refer to the same file or
108directory (as indicated by device number and i-node number).
109Raise an exception if a \function{os.stat()} call on either pathname
110fails.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000111\end{funcdesc}
112
113\begin{funcdesc}{split}{p}
Guido van Rossum7c2fdda1996-06-26 19:23:26 +0000114Split the pathname \var{p} in a pair \code{(\var{head}, \var{tail})},
115where \var{tail} is the last pathname component and \var{head} is
116everything leading up to that. The \var{tail} part will never contain
117a slash; if \var{p} ends in a slash, \var{tail} will be empty. If
118there is no slash in \var{p}, \var{head} will be empty. If \var{p} is
119empty, both \var{head} and \var{tail} are empty. Trailing slashes are
120stripped from \var{head} unless it is the root (one or more slashes
121only). In nearly all cases, \code{join(\var{head}, \var{tail})}
122equals \var{p} (the only exception being when there were multiple
123slashes separating \var{head} from \var{tail}).
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000124\end{funcdesc}
125
126\begin{funcdesc}{splitext}{p}
127Split the pathname \var{p} in a pair \code{(\var{root}, \var{ext})}
128such that \code{\var{root} + \var{ext} == \var{p}},
Guido van Rossum56b30ea1996-08-19 23:00:50 +0000129and \var{ext} is empty or begins with a period and contains
130at most one period.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000131\end{funcdesc}
132
Fred Drakecce10901998-03-17 06:33:25 +0000133\begin{funcdesc}{walk}{p, visit, arg}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000134Calls the function \var{visit} with arguments
135\code{(\var{arg}, \var{dirname}, \var{names})} for each directory in the
136directory tree rooted at \var{p} (including \var{p} itself, if it is a
137directory). The argument \var{dirname} specifies the visited directory,
138the argument \var{names} lists the files in the directory (gotten from
Fred Drakedb9693e1998-03-11 05:50:42 +0000139\code{os.listdir(\var{dirname})}).
Guido van Rossume8e87991997-03-25 15:25:54 +0000140The \var{visit} function may modify \var{names} to
Guido van Rossum470be141995-03-17 16:07:09 +0000141influence the set of directories visited below \var{dirname}, e.g., to
142avoid visiting certain parts of the tree. (The object referred to by
Fred Drakedb9693e1998-03-11 05:50:42 +0000143\var{names} must be modified in place, using \keyword{del} or slice
Guido van Rossum470be141995-03-17 16:07:09 +0000144assignment.)
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000145\end{funcdesc}