1998-08-10 16:42:37 -03:00
|
|
|
\section{\module{stat} ---
|
1999-03-02 12:37:17 -04:00
|
|
|
Interpreting \function{stat()} results}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
1999-03-02 12:37:17 -04:00
|
|
|
\declaremodule{standard}{stat}
|
1999-03-02 13:03:42 -04:00
|
|
|
\platform{Unix}
|
1998-08-06 18:30:32 -03:00
|
|
|
\modulesynopsis{Utilities for interpreting the results of
|
1999-03-02 12:37:17 -04:00
|
|
|
\function{os.stat()}, \function{os.lstat()} and \function{os.fstat()}.}
|
|
|
|
\sectionauthor{Skip Montanaro}{skip@automatrix.com}
|
1998-07-23 14:59:49 -03:00
|
|
|
|
1996-12-19 18:39:22 -04:00
|
|
|
|
1998-08-10 16:42:37 -03:00
|
|
|
The \module{stat} module defines constants and functions for
|
|
|
|
interpreting the results of \function{os.stat()} and
|
|
|
|
\function{os.lstat()} (if they exist). For complete details about the
|
|
|
|
\cfunction{stat()} and \cfunction{lstat()} system calls, consult your
|
|
|
|
local man pages.
|
1996-12-19 18:39:22 -04:00
|
|
|
|
1998-08-10 16:42:37 -03:00
|
|
|
The \module{stat} module defines the following functions:
|
1996-12-19 18:39:22 -04:00
|
|
|
|
|
|
|
|
|
|
|
\begin{funcdesc}{S_ISDIR}{mode}
|
1998-01-29 18:03:41 -04:00
|
|
|
Return non-zero if the mode was gotten from a directory.
|
1996-12-19 18:39:22 -04:00
|
|
|
\end{funcdesc}
|
|
|
|
|
|
|
|
\begin{funcdesc}{S_ISCHR}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a character special device.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1998-01-29 18:03:41 -04:00
|
|
|
\begin{funcdesc}{S_ISBLK}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a block special device.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
1996-12-19 18:39:22 -04:00
|
|
|
\begin{funcdesc}{S_ISREG}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a regular file.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
|
|
|
\begin{funcdesc}{S_ISFIFO}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a FIFO.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
|
|
|
\begin{funcdesc}{S_ISLNK}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a symbolic link.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
|
|
|
\begin{funcdesc}{S_ISSOCK}{mode}
|
|
|
|
Return non-zero if the mode was gotten from a socket.
|
|
|
|
\end{funcdesc}
|
|
|
|
|
|
|
|
All the data items below are simply symbolic indexes into the 10-tuple
|
1999-03-02 12:37:17 -04:00
|
|
|
returned by \function{os.stat()} or \function{os.lstat()}.
|
1996-12-19 18:39:22 -04:00
|
|
|
|
|
|
|
\begin{datadesc}{ST_MODE}
|
|
|
|
Inode protection mode.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_INO}
|
|
|
|
Inode number.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_DEV}
|
|
|
|
Device inode resides on.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_NLINK}
|
|
|
|
Number of links to the inode.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_UID}
|
|
|
|
User id of the owner.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_GID}
|
|
|
|
Group id of the owner.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_SIZE}
|
|
|
|
File size in bytes.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_ATIME}
|
|
|
|
Time of last access.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_MTIME}
|
|
|
|
Time of last modification.
|
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
\begin{datadesc}{ST_CTIME}
|
1998-04-08 19:44:25 -03:00
|
|
|
Time of last status change (see manual pages for details).
|
1996-12-19 18:39:22 -04:00
|
|
|
\end{datadesc}
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
1998-02-13 02:58:54 -04:00
|
|
|
\begin{verbatim}
|
1996-12-19 18:39:22 -04:00
|
|
|
import os, sys
|
|
|
|
from stat import *
|
|
|
|
|
|
|
|
def process(dir, func):
|
|
|
|
'''recursively descend the directory rooted at dir, calling func for
|
|
|
|
each regular file'''
|
|
|
|
|
|
|
|
for f in os.listdir(dir):
|
|
|
|
mode = os.stat('%s/%s' % (dir, f))[ST_MODE]
|
|
|
|
if S_ISDIR(mode):
|
|
|
|
# recurse into directory
|
|
|
|
process('%s/%s' % (dir, f), func)
|
|
|
|
elif S_ISREG(mode):
|
|
|
|
func('%s/%s' % (dir, f))
|
|
|
|
else:
|
|
|
|
print 'Skipping %s/%s' % (dir, f)
|
|
|
|
|
|
|
|
def f(file):
|
1999-03-02 12:37:17 -04:00
|
|
|
-Egon
|
|
|
|
|
|
|
|
|
|
|
|
|
1996-12-19 18:39:22 -04:00
|
|
|
print 'frobbed', file
|
|
|
|
|
|
|
|
if __name__ == '__main__': process(sys.argv[1], f)
|
1998-02-13 02:58:54 -04:00
|
|
|
\end{verbatim}
|
1999-03-02 12:37:17 -04:00
|
|
|
|
|
|
|
-Egon
|
|
|
|
|
|
|
|
|