This commit is contained in:
R David Murray 2011-03-10 17:22:33 -05:00
commit 5647c473bc
3 changed files with 77 additions and 32 deletions

View File

@ -965,16 +965,16 @@ Files and Directories
Set the flags of *path* to the numeric *flags*. *flags* may take a combination
(bitwise OR) of the following values (as defined in the :mod:`stat` module):
* ``UF_NODUMP``
* ``UF_IMMUTABLE``
* ``UF_APPEND``
* ``UF_OPAQUE``
* ``UF_NOUNLINK``
* ``SF_ARCHIVED``
* ``SF_IMMUTABLE``
* ``SF_APPEND``
* ``SF_NOUNLINK``
* ``SF_SNAPSHOT``
* :data:`stat.UF_NODUMP`
* :data:`stat.UF_IMMUTABLE`
* :data:`stat.UF_APPEND`
* :data:`stat.UF_OPAQUE`
* :data:`stat.UF_NOUNLINK`
* :data:`stat.SF_ARCHIVED`
* :data:`stat.SF_IMMUTABLE`
* :data:`stat.SF_APPEND`
* :data:`stat.SF_NOUNLINK`
* :data:`stat.SF_SNAPSHOT`
Availability: Unix.

View File

@ -76,6 +76,34 @@ for each test. These are also useful when checking for information about a file
that isn't handled by :mod:`os.path`, like the tests for block and character
devices.
Example::
import os, sys
from stat import *
def walktree(top, callback):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.stat(pathname)[ST_MODE]
if S_ISDIR(mode):
# It's a directory, recurse into it
walktree(pathname, callback)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname)
else:
# Unknown file type, print a message
print('Skipping %s' % pathname)
def visitfile(file):
print('visiting', file)
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
All the variables below are simply symbolic indexes into the 10-tuple returned
by :func:`os.stat`, :func:`os.fstat` or :func:`os.lstat`.
@ -265,31 +293,47 @@ The following flags can also be used in the *mode* argument of :func:`os.chmod`:
Unix V7 synonym for :data:`S_IXUSR`.
Example::
The following flags can be used in the *flags* argument of :func:`os.chflags`:
import os, sys
from stat import *
.. data:: UF_NODUMP
def walktree(top, callback):
'''recursively descend the directory tree rooted at top,
calling the callback function for each regular file'''
Do not dump the file.
for f in os.listdir(top):
pathname = os.path.join(top, f)
mode = os.stat(pathname)[ST_MODE]
if S_ISDIR(mode):
# It's a directory, recurse into it
walktree(pathname, callback)
elif S_ISREG(mode):
# It's a file, call the callback function
callback(pathname)
else:
# Unknown file type, print a message
print('Skipping %s' % pathname)
.. data:: UF_IMMUTABLE
def visitfile(file):
print('visiting', file)
The file may not be changed.
if __name__ == '__main__':
walktree(sys.argv[1], visitfile)
.. data:: UF_APPEND
The file may only be appended to.
.. data:: UF_OPAQUE
The file may not be renamed or deleted.
.. data:: UF_NOUNLINK
The directory is opaque when viewed through a union stack.
.. data:: SF_ARCHIVED
The file may be archived.
.. data:: SF_IMMUTABLE
The file may not be changed.
.. data:: SF_APPEND
The file may only be appended to.
.. data:: SF_NOUNLINK
The file may not be renamed or deleted.
.. data:: SF_SNAPSHOT
The file is a snapshot file.
See the \*BSD or Mac OS systems man page :manpage:`chflags(2)` for more information.

View File

@ -619,6 +619,7 @@ Stefan Norberg
Tim Northover
Joe Norton
Neal Norwitz
Michal Nowikowski
Nigel O'Brian
Kevin O'Connor
Tim O'Malley