symbian-qemu-0.9.1-12/python-2.6.1/Doc/library/stat.rst
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 
       
     2 :mod:`stat` --- Interpreting :func:`stat` results
       
     3 =================================================
       
     4 
       
     5 .. module:: stat
       
     6    :synopsis: Utilities for interpreting the results of os.stat(), os.lstat() and os.fstat().
       
     7 .. sectionauthor:: Skip Montanaro <skip@automatrix.com>
       
     8 
       
     9 
       
    10 The :mod:`stat` module defines constants and functions for interpreting the
       
    11 results of :func:`os.stat`, :func:`os.fstat` and :func:`os.lstat` (if they
       
    12 exist).  For complete details about the :cfunc:`stat`, :cfunc:`fstat` and
       
    13 :cfunc:`lstat` calls, consult the documentation for your system.
       
    14 
       
    15 The :mod:`stat` module defines the following functions to test for specific file
       
    16 types:
       
    17 
       
    18 
       
    19 .. function:: S_ISDIR(mode)
       
    20 
       
    21    Return non-zero if the mode is from a directory.
       
    22 
       
    23 
       
    24 .. function:: S_ISCHR(mode)
       
    25 
       
    26    Return non-zero if the mode is from a character special device file.
       
    27 
       
    28 
       
    29 .. function:: S_ISBLK(mode)
       
    30 
       
    31    Return non-zero if the mode is from a block special device file.
       
    32 
       
    33 
       
    34 .. function:: S_ISREG(mode)
       
    35 
       
    36    Return non-zero if the mode is from a regular file.
       
    37 
       
    38 
       
    39 .. function:: S_ISFIFO(mode)
       
    40 
       
    41    Return non-zero if the mode is from a FIFO (named pipe).
       
    42 
       
    43 
       
    44 .. function:: S_ISLNK(mode)
       
    45 
       
    46    Return non-zero if the mode is from a symbolic link.
       
    47 
       
    48 
       
    49 .. function:: S_ISSOCK(mode)
       
    50 
       
    51    Return non-zero if the mode is from a socket.
       
    52 
       
    53 Two additional functions are defined for more general manipulation of the file's
       
    54 mode:
       
    55 
       
    56 
       
    57 .. function:: S_IMODE(mode)
       
    58 
       
    59    Return the portion of the file's mode that can be set by :func:`os.chmod`\
       
    60    ---that is, the file's permission bits, plus the sticky bit, set-group-id, and
       
    61    set-user-id bits (on systems that support them).
       
    62 
       
    63 
       
    64 .. function:: S_IFMT(mode)
       
    65 
       
    66    Return the portion of the file's mode that describes the file type (used by the
       
    67    :func:`S_IS\*` functions above).
       
    68 
       
    69 Normally, you would use the :func:`os.path.is\*` functions for testing the type
       
    70 of a file; the functions here are useful when you are doing multiple tests of
       
    71 the same file and wish to avoid the overhead of the :cfunc:`stat` system call
       
    72 for each test.  These are also useful when checking for information about a file
       
    73 that isn't handled by :mod:`os.path`, like the tests for block and character
       
    74 devices.
       
    75 
       
    76 All the variables below are simply symbolic indexes into the 10-tuple returned
       
    77 by :func:`os.stat`, :func:`os.fstat` or :func:`os.lstat`.
       
    78 
       
    79 
       
    80 .. data:: ST_MODE
       
    81 
       
    82    Inode protection mode.
       
    83 
       
    84 
       
    85 .. data:: ST_INO
       
    86 
       
    87    Inode number.
       
    88 
       
    89 
       
    90 .. data:: ST_DEV
       
    91 
       
    92    Device inode resides on.
       
    93 
       
    94 
       
    95 .. data:: ST_NLINK
       
    96 
       
    97    Number of links to the inode.
       
    98 
       
    99 
       
   100 .. data:: ST_UID
       
   101 
       
   102    User id of the owner.
       
   103 
       
   104 
       
   105 .. data:: ST_GID
       
   106 
       
   107    Group id of the owner.
       
   108 
       
   109 
       
   110 .. data:: ST_SIZE
       
   111 
       
   112    Size in bytes of a plain file; amount of data waiting on some special files.
       
   113 
       
   114 
       
   115 .. data:: ST_ATIME
       
   116 
       
   117    Time of last access.
       
   118 
       
   119 
       
   120 .. data:: ST_MTIME
       
   121 
       
   122    Time of last modification.
       
   123 
       
   124 
       
   125 .. data:: ST_CTIME
       
   126 
       
   127    The "ctime" as reported by the operating system.  On some systems (like Unix) is
       
   128    the time of the last metadata change, and, on others (like Windows), is the
       
   129    creation time (see platform documentation for details).
       
   130 
       
   131 The interpretation of "file size" changes according to the file type.  For plain
       
   132 files this is the size of the file in bytes.  For FIFOs and sockets under most
       
   133 flavors of Unix (including Linux in particular), the "size" is the number of
       
   134 bytes waiting to be read at the time of the call to :func:`os.stat`,
       
   135 :func:`os.fstat`, or :func:`os.lstat`; this can sometimes be useful, especially
       
   136 for polling one of these special files after a non-blocking open.  The meaning
       
   137 of the size field for other character and block devices varies more, depending
       
   138 on the implementation of the underlying system call.
       
   139 
       
   140 Example::
       
   141 
       
   142    import os, sys
       
   143    from stat import *
       
   144 
       
   145    def walktree(top, callback):
       
   146        '''recursively descend the directory tree rooted at top,
       
   147           calling the callback function for each regular file'''
       
   148 
       
   149        for f in os.listdir(top):
       
   150            pathname = os.path.join(top, f)
       
   151            mode = os.stat(pathname)[ST_MODE]
       
   152            if S_ISDIR(mode):
       
   153                # It's a directory, recurse into it
       
   154                walktree(pathname, callback)
       
   155            elif S_ISREG(mode):
       
   156                # It's a file, call the callback function
       
   157                callback(pathname)
       
   158            else:
       
   159                # Unknown file type, print a message
       
   160                print 'Skipping %s' % pathname
       
   161 
       
   162    def visitfile(file):
       
   163        print 'visiting', file
       
   164 
       
   165    if __name__ == '__main__':
       
   166        walktree(sys.argv[1], visitfile)
       
   167