blob: 5b1f16f4da4df42072c6bd2124f7436ecece8d4f [file] [log] [blame]
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00001\section{Standard Module \sectcode{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
8module \code{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
Fred Drake19479911998-02-13 06:58:54 +000011\setindexsubitem{(in module posixpath)}
Guido van Rossum470be141995-03-17 16:07:09 +000012
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000013\begin{funcdesc}{basename}{p}
14Return the base name of pathname
15\var{p}.
16This is the second half of the pair returned by
17\code{posixpath.split(\var{p})}.
18\end{funcdesc}
19
20\begin{funcdesc}{commonprefix}{list}
21Return the longest string that is a prefix of all strings in
22\var{list}.
23If
24\var{list}
25is empty, return the empty string (\code{''}).
26\end{funcdesc}
27
28\begin{funcdesc}{exists}{p}
29Return true if
30\var{p}
31refers to an existing path.
32\end{funcdesc}
33
34\begin{funcdesc}{expanduser}{p}
35Return the argument with an initial component of \samp{\~} or
36\samp{\~\var{user}} replaced by that \var{user}'s home directory. An
37initial \samp{\~{}} is replaced by the environment variable \code{\${}HOME};
38an initial \samp{\~\var{user}} is looked up in the password directory through
39the built-in module \code{pwd}. If the expansion fails, or if the
40path does not begin with a tilde, the path is returned unchanged.
Fred Drake54820dc1997-12-15 21:56:05 +000041\refbimodindex{pwd}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000042\end{funcdesc}
43
Guido van Rossum17383111994-04-21 10:32:28 +000044\begin{funcdesc}{expandvars}{p}
45Return the argument with environment variables expanded. Substrings
46of the form \samp{\$\var{name}} or \samp{\$\{\var{name}\}} are
47replaced by the value of environment variable \var{name}. Malformed
48variable names and references to non-existing variables are left
49unchanged.
50\end{funcdesc}
51
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000052\begin{funcdesc}{isabs}{p}
53Return true if \var{p} is an absolute pathname (begins with a slash).
54\end{funcdesc}
55
56\begin{funcdesc}{isfile}{p}
57Return true if \var{p} is an existing regular file. This follows
Fred Drake54820dc1997-12-15 21:56:05 +000058symbolic links, so both \code{islink()} and \code{isfile()} can be
59true for the same path.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000060\end{funcdesc}
61
62\begin{funcdesc}{isdir}{p}
63Return true if \var{p} is an existing directory. This follows
Fred Drake54820dc1997-12-15 21:56:05 +000064symbolic links, so both \code{islink()} and \code{isdir()} can be true
65for the same path.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000066\end{funcdesc}
67
68\begin{funcdesc}{islink}{p}
69Return true if
70\var{p}
71refers to a directory entry that is a symbolic link.
72Always false if symbolic links are not supported.
73\end{funcdesc}
74
75\begin{funcdesc}{ismount}{p}
Guido van Rossum470be141995-03-17 16:07:09 +000076Return true if pathname \var{p} is a \dfn{mount point}: a point in a
77file system where a different file system has been mounted. The
78function checks whether \var{p}'s parent, \file{\var{p}/..}, is on a
79different device than \var{p}, or whether \file{\var{p}/..} and
80\var{p} point to the same i-node on the same device --- this should
Fred Drake65b32f71998-02-09 20:27:12 +000081detect mount points for all \UNIX{} and \POSIX{} variants.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000082\end{funcdesc}
83
Barry Warsaw75745871997-02-18 21:53:53 +000084\begin{funcdesc}{join}{p\optional{\, q\optional{\, ...}}}
85Joins one or more path components intelligently. If any component is
86an absolute path, all previous components are thrown away, and joining
87continues. The return value is the concatenation of \var{p}, and
88optionally \var{q}, etc., with exactly one slash (\code{'/'}) inserted
89between components, unless \var{p} is empty.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000090\end{funcdesc}
91
92\begin{funcdesc}{normcase}{p}
Guido van Rossum1931c0c1998-02-18 14:00:05 +000093Normalize the case of a pathname. On \UNIX{}, this returns the path
94unchanged; on case-insensitive filesystems, it converts the path to
95lowercase. On Windows, it also converts forward slashes to backward
96slashes.
97\end{funcdesc}
98
99\begin{funcdesc}{normpath}{p}
100Normalize a pathname. This collapses redundant separators and
101up-level references, e.g. \code{A//B}, \code{A/./B} and
102\code{A/foo/../B} all become \code{A/B}. It does not normalize the
103case (use \code{normcase()} for that). On Windows, it does converts
104forward slashes to backward slashes.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000105\end{funcdesc}
106
107\begin{funcdesc}{samefile}{p\, q}
108Return true if both pathname arguments refer to the same file or directory
109(as indicated by device number and i-node number).
Fred Drake54820dc1997-12-15 21:56:05 +0000110Raise an exception if a \code{stat()} call on either pathname fails.
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
133\begin{funcdesc}{walk}{p\, visit\, arg}
134Calls 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
Guido van Rossume8e87991997-03-25 15:25:54 +0000139\code{posix.listdir(\var{dirname})}).
140The \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
143\var{names} must be modified in place, using \code{del} or slice
144assignment.)
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000145\end{funcdesc}