summaryrefslogtreecommitdiffstats
path: root/Doc/lib/libstat.tex
blob: b74e98b63f5d5e34a32f7abb3dfa21bd20f9444b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
\section{\module{stat} ---
         Utilities for interpreting \function{stat()} results.}
\declaremodule{standard}{stat}
\sectionauthor{Skip Montanaro}{skip@automatrix.com}


\modulesynopsis{Utilities for interpreting the results of
\function{os.stat()}, \function{os.lstat()} and \function{os.fstat()}.}


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.

The \module{stat} module defines the following functions:


\begin{funcdesc}{S_ISDIR}{mode}
Return non-zero if the mode was gotten from a directory.
\end{funcdesc}

\begin{funcdesc}{S_ISCHR}{mode}
Return non-zero if the mode was gotten from a character special device.
\end{funcdesc}

\begin{funcdesc}{S_ISBLK}{mode}
Return non-zero if the mode was gotten from a block special device.
\end{funcdesc}

\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
returned by \code{os.stat()} or \code{os.lstat()}.  

\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}
Time of last status change (see manual pages for details).
\end{datadesc}

Example:

\begin{verbatim}
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):
    print 'frobbed', file

if __name__ == '__main__': process(sys.argv[1], f)
\end{verbatim}