17db96d56Sopenharmony_ci:mod:`stat` --- Interpreting :func:`~os.stat` results
27db96d56Sopenharmony_ci=====================================================
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci.. module:: stat
57db96d56Sopenharmony_ci   :synopsis: Utilities for interpreting the results of os.stat(),
67db96d56Sopenharmony_ci              os.lstat() and os.fstat().
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_ci.. sectionauthor:: Skip Montanaro <skip@automatrix.com>
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci**Source code:** :source:`Lib/stat.py`
117db96d56Sopenharmony_ci
127db96d56Sopenharmony_ci--------------
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_ciThe :mod:`stat` module defines constants and functions for interpreting the
157db96d56Sopenharmony_ciresults of :func:`os.stat`, :func:`os.fstat` and :func:`os.lstat` (if they
167db96d56Sopenharmony_ciexist).  For complete details about the :c:func:`stat`, :c:func:`fstat` and
177db96d56Sopenharmony_ci:c:func:`lstat` calls, consult the documentation for your system.
187db96d56Sopenharmony_ci
197db96d56Sopenharmony_ci.. versionchanged:: 3.4
207db96d56Sopenharmony_ci   The stat module is backed by a C implementation.
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_ciThe :mod:`stat` module defines the following functions to test for specific file
237db96d56Sopenharmony_citypes:
247db96d56Sopenharmony_ci
257db96d56Sopenharmony_ci
267db96d56Sopenharmony_ci.. function:: S_ISDIR(mode)
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci   Return non-zero if the mode is from a directory.
297db96d56Sopenharmony_ci
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci.. function:: S_ISCHR(mode)
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci   Return non-zero if the mode is from a character special device file.
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ci.. function:: S_ISBLK(mode)
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci   Return non-zero if the mode is from a block special device file.
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci.. function:: S_ISREG(mode)
427db96d56Sopenharmony_ci
437db96d56Sopenharmony_ci   Return non-zero if the mode is from a regular file.
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci.. function:: S_ISFIFO(mode)
477db96d56Sopenharmony_ci
487db96d56Sopenharmony_ci   Return non-zero if the mode is from a FIFO (named pipe).
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci
517db96d56Sopenharmony_ci.. function:: S_ISLNK(mode)
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_ci   Return non-zero if the mode is from a symbolic link.
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci.. function:: S_ISSOCK(mode)
577db96d56Sopenharmony_ci
587db96d56Sopenharmony_ci   Return non-zero if the mode is from a socket.
597db96d56Sopenharmony_ci
607db96d56Sopenharmony_ci.. function:: S_ISDOOR(mode)
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ci   Return non-zero if the mode is from a door.
637db96d56Sopenharmony_ci
647db96d56Sopenharmony_ci   .. versionadded:: 3.4
657db96d56Sopenharmony_ci
667db96d56Sopenharmony_ci.. function:: S_ISPORT(mode)
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_ci   Return non-zero if the mode is from an event port.
697db96d56Sopenharmony_ci
707db96d56Sopenharmony_ci   .. versionadded:: 3.4
717db96d56Sopenharmony_ci
727db96d56Sopenharmony_ci.. function:: S_ISWHT(mode)
737db96d56Sopenharmony_ci
747db96d56Sopenharmony_ci   Return non-zero if the mode is from a whiteout.
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci   .. versionadded:: 3.4
777db96d56Sopenharmony_ci
787db96d56Sopenharmony_ciTwo additional functions are defined for more general manipulation of the file's
797db96d56Sopenharmony_cimode:
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ci.. function:: S_IMODE(mode)
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci   Return the portion of the file's mode that can be set by
857db96d56Sopenharmony_ci   :func:`os.chmod`\ ---that is, the file's permission bits, plus the sticky
867db96d56Sopenharmony_ci   bit, set-group-id, and set-user-id bits (on systems that support them).
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_ci
897db96d56Sopenharmony_ci.. function:: S_IFMT(mode)
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci   Return the portion of the file's mode that describes the file type (used by the
927db96d56Sopenharmony_ci   :func:`S_IS\*` functions above).
937db96d56Sopenharmony_ci
947db96d56Sopenharmony_ciNormally, you would use the :func:`os.path.is\*` functions for testing the type
957db96d56Sopenharmony_ciof a file; the functions here are useful when you are doing multiple tests of
967db96d56Sopenharmony_cithe same file and wish to avoid the overhead of the :c:func:`stat` system call
977db96d56Sopenharmony_cifor each test.  These are also useful when checking for information about a file
987db96d56Sopenharmony_cithat isn't handled by :mod:`os.path`, like the tests for block and character
997db96d56Sopenharmony_cidevices.
1007db96d56Sopenharmony_ci
1017db96d56Sopenharmony_ciExample::
1027db96d56Sopenharmony_ci
1037db96d56Sopenharmony_ci   import os, sys
1047db96d56Sopenharmony_ci   from stat import *
1057db96d56Sopenharmony_ci
1067db96d56Sopenharmony_ci   def walktree(top, callback):
1077db96d56Sopenharmony_ci       '''recursively descend the directory tree rooted at top,
1087db96d56Sopenharmony_ci          calling the callback function for each regular file'''
1097db96d56Sopenharmony_ci
1107db96d56Sopenharmony_ci       for f in os.listdir(top):
1117db96d56Sopenharmony_ci           pathname = os.path.join(top, f)
1127db96d56Sopenharmony_ci           mode = os.lstat(pathname).st_mode
1137db96d56Sopenharmony_ci           if S_ISDIR(mode):
1147db96d56Sopenharmony_ci               # It's a directory, recurse into it
1157db96d56Sopenharmony_ci               walktree(pathname, callback)
1167db96d56Sopenharmony_ci           elif S_ISREG(mode):
1177db96d56Sopenharmony_ci               # It's a file, call the callback function
1187db96d56Sopenharmony_ci               callback(pathname)
1197db96d56Sopenharmony_ci           else:
1207db96d56Sopenharmony_ci               # Unknown file type, print a message
1217db96d56Sopenharmony_ci               print('Skipping %s' % pathname)
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_ci   def visitfile(file):
1247db96d56Sopenharmony_ci       print('visiting', file)
1257db96d56Sopenharmony_ci
1267db96d56Sopenharmony_ci   if __name__ == '__main__':
1277db96d56Sopenharmony_ci       walktree(sys.argv[1], visitfile)
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ciAn additional utility function is provided to convert a file's mode in a human
1307db96d56Sopenharmony_cireadable string:
1317db96d56Sopenharmony_ci
1327db96d56Sopenharmony_ci.. function:: filemode(mode)
1337db96d56Sopenharmony_ci
1347db96d56Sopenharmony_ci   Convert a file's mode to a string of the form '-rwxrwxrwx'.
1357db96d56Sopenharmony_ci
1367db96d56Sopenharmony_ci   .. versionadded:: 3.3
1377db96d56Sopenharmony_ci
1387db96d56Sopenharmony_ci   .. versionchanged:: 3.4
1397db96d56Sopenharmony_ci      The function supports :data:`S_IFDOOR`, :data:`S_IFPORT` and
1407db96d56Sopenharmony_ci      :data:`S_IFWHT`.
1417db96d56Sopenharmony_ci
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_ciAll the variables below are simply symbolic indexes into the 10-tuple returned
1447db96d56Sopenharmony_ciby :func:`os.stat`, :func:`os.fstat` or :func:`os.lstat`.
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_ci
1477db96d56Sopenharmony_ci.. data:: ST_MODE
1487db96d56Sopenharmony_ci
1497db96d56Sopenharmony_ci   Inode protection mode.
1507db96d56Sopenharmony_ci
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ci.. data:: ST_INO
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci   Inode number.
1557db96d56Sopenharmony_ci
1567db96d56Sopenharmony_ci
1577db96d56Sopenharmony_ci.. data:: ST_DEV
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ci   Device inode resides on.
1607db96d56Sopenharmony_ci
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ci.. data:: ST_NLINK
1637db96d56Sopenharmony_ci
1647db96d56Sopenharmony_ci   Number of links to the inode.
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci.. data:: ST_UID
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci   User id of the owner.
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_ci
1727db96d56Sopenharmony_ci.. data:: ST_GID
1737db96d56Sopenharmony_ci
1747db96d56Sopenharmony_ci   Group id of the owner.
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci
1777db96d56Sopenharmony_ci.. data:: ST_SIZE
1787db96d56Sopenharmony_ci
1797db96d56Sopenharmony_ci   Size in bytes of a plain file; amount of data waiting on some special files.
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci
1827db96d56Sopenharmony_ci.. data:: ST_ATIME
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_ci   Time of last access.
1857db96d56Sopenharmony_ci
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ci.. data:: ST_MTIME
1887db96d56Sopenharmony_ci
1897db96d56Sopenharmony_ci   Time of last modification.
1907db96d56Sopenharmony_ci
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ci.. data:: ST_CTIME
1937db96d56Sopenharmony_ci
1947db96d56Sopenharmony_ci   The "ctime" as reported by the operating system.  On some systems (like Unix) is
1957db96d56Sopenharmony_ci   the time of the last metadata change, and, on others (like Windows), is the
1967db96d56Sopenharmony_ci   creation time (see platform documentation for details).
1977db96d56Sopenharmony_ci
1987db96d56Sopenharmony_ciThe interpretation of "file size" changes according to the file type.  For plain
1997db96d56Sopenharmony_cifiles this is the size of the file in bytes.  For FIFOs and sockets under most
2007db96d56Sopenharmony_ciflavors of Unix (including Linux in particular), the "size" is the number of
2017db96d56Sopenharmony_cibytes waiting to be read at the time of the call to :func:`os.stat`,
2027db96d56Sopenharmony_ci:func:`os.fstat`, or :func:`os.lstat`; this can sometimes be useful, especially
2037db96d56Sopenharmony_cifor polling one of these special files after a non-blocking open.  The meaning
2047db96d56Sopenharmony_ciof the size field for other character and block devices varies more, depending
2057db96d56Sopenharmony_cion the implementation of the underlying system call.
2067db96d56Sopenharmony_ci
2077db96d56Sopenharmony_ciThe variables below define the flags used in the :data:`ST_MODE` field.
2087db96d56Sopenharmony_ci
2097db96d56Sopenharmony_ciUse of the functions above is more portable than use of the first set of flags:
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci.. data:: S_IFSOCK
2127db96d56Sopenharmony_ci
2137db96d56Sopenharmony_ci   Socket.
2147db96d56Sopenharmony_ci
2157db96d56Sopenharmony_ci.. data:: S_IFLNK
2167db96d56Sopenharmony_ci
2177db96d56Sopenharmony_ci   Symbolic link.
2187db96d56Sopenharmony_ci
2197db96d56Sopenharmony_ci.. data:: S_IFREG
2207db96d56Sopenharmony_ci
2217db96d56Sopenharmony_ci   Regular file.
2227db96d56Sopenharmony_ci
2237db96d56Sopenharmony_ci.. data:: S_IFBLK
2247db96d56Sopenharmony_ci
2257db96d56Sopenharmony_ci   Block device.
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci.. data:: S_IFDIR
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci   Directory.
2307db96d56Sopenharmony_ci
2317db96d56Sopenharmony_ci.. data:: S_IFCHR
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ci   Character device.
2347db96d56Sopenharmony_ci
2357db96d56Sopenharmony_ci.. data:: S_IFIFO
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ci   FIFO.
2387db96d56Sopenharmony_ci
2397db96d56Sopenharmony_ci.. data:: S_IFDOOR
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_ci   Door.
2427db96d56Sopenharmony_ci
2437db96d56Sopenharmony_ci   .. versionadded:: 3.4
2447db96d56Sopenharmony_ci
2457db96d56Sopenharmony_ci.. data:: S_IFPORT
2467db96d56Sopenharmony_ci
2477db96d56Sopenharmony_ci   Event port.
2487db96d56Sopenharmony_ci
2497db96d56Sopenharmony_ci   .. versionadded:: 3.4
2507db96d56Sopenharmony_ci
2517db96d56Sopenharmony_ci.. data:: S_IFWHT
2527db96d56Sopenharmony_ci
2537db96d56Sopenharmony_ci   Whiteout.
2547db96d56Sopenharmony_ci
2557db96d56Sopenharmony_ci   .. versionadded:: 3.4
2567db96d56Sopenharmony_ci
2577db96d56Sopenharmony_ci.. note::
2587db96d56Sopenharmony_ci
2597db96d56Sopenharmony_ci   :data:`S_IFDOOR`, :data:`S_IFPORT` or :data:`S_IFWHT` are defined as
2607db96d56Sopenharmony_ci   0 when the platform does not have support for the file types.
2617db96d56Sopenharmony_ci
2627db96d56Sopenharmony_ciThe following flags can also be used in the *mode* argument of :func:`os.chmod`:
2637db96d56Sopenharmony_ci
2647db96d56Sopenharmony_ci.. data:: S_ISUID
2657db96d56Sopenharmony_ci
2667db96d56Sopenharmony_ci   Set UID bit.
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_ci.. data:: S_ISGID
2697db96d56Sopenharmony_ci
2707db96d56Sopenharmony_ci   Set-group-ID bit.  This bit has several special uses.  For a directory
2717db96d56Sopenharmony_ci   it indicates that BSD semantics is to be used for that directory:
2727db96d56Sopenharmony_ci   files created there inherit their group ID from the directory, not
2737db96d56Sopenharmony_ci   from the effective group ID of the creating process, and directories
2747db96d56Sopenharmony_ci   created there will also get the :data:`S_ISGID` bit set.  For a
2757db96d56Sopenharmony_ci   file that does not have the group execution bit (:data:`S_IXGRP`)
2767db96d56Sopenharmony_ci   set, the set-group-ID bit indicates mandatory file/record locking
2777db96d56Sopenharmony_ci   (see also :data:`S_ENFMT`).
2787db96d56Sopenharmony_ci
2797db96d56Sopenharmony_ci.. data:: S_ISVTX
2807db96d56Sopenharmony_ci
2817db96d56Sopenharmony_ci   Sticky bit.  When this bit is set on a directory it means that a file
2827db96d56Sopenharmony_ci   in that directory can be renamed or deleted only by the owner of the
2837db96d56Sopenharmony_ci   file, by the owner of the directory, or by a privileged process.
2847db96d56Sopenharmony_ci
2857db96d56Sopenharmony_ci.. data:: S_IRWXU
2867db96d56Sopenharmony_ci
2877db96d56Sopenharmony_ci   Mask for file owner permissions.
2887db96d56Sopenharmony_ci
2897db96d56Sopenharmony_ci.. data:: S_IRUSR
2907db96d56Sopenharmony_ci
2917db96d56Sopenharmony_ci   Owner has read permission.
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_ci.. data:: S_IWUSR
2947db96d56Sopenharmony_ci
2957db96d56Sopenharmony_ci   Owner has write permission.
2967db96d56Sopenharmony_ci
2977db96d56Sopenharmony_ci.. data:: S_IXUSR
2987db96d56Sopenharmony_ci
2997db96d56Sopenharmony_ci   Owner has execute permission.
3007db96d56Sopenharmony_ci
3017db96d56Sopenharmony_ci.. data:: S_IRWXG
3027db96d56Sopenharmony_ci
3037db96d56Sopenharmony_ci   Mask for group permissions.
3047db96d56Sopenharmony_ci
3057db96d56Sopenharmony_ci.. data:: S_IRGRP
3067db96d56Sopenharmony_ci
3077db96d56Sopenharmony_ci   Group has read permission.
3087db96d56Sopenharmony_ci
3097db96d56Sopenharmony_ci.. data:: S_IWGRP
3107db96d56Sopenharmony_ci
3117db96d56Sopenharmony_ci   Group has write permission.
3127db96d56Sopenharmony_ci
3137db96d56Sopenharmony_ci.. data:: S_IXGRP
3147db96d56Sopenharmony_ci
3157db96d56Sopenharmony_ci   Group has execute permission.
3167db96d56Sopenharmony_ci
3177db96d56Sopenharmony_ci.. data:: S_IRWXO
3187db96d56Sopenharmony_ci
3197db96d56Sopenharmony_ci   Mask for permissions for others (not in group).
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ci.. data:: S_IROTH
3227db96d56Sopenharmony_ci
3237db96d56Sopenharmony_ci   Others have read permission.
3247db96d56Sopenharmony_ci
3257db96d56Sopenharmony_ci.. data:: S_IWOTH
3267db96d56Sopenharmony_ci
3277db96d56Sopenharmony_ci   Others have write permission.
3287db96d56Sopenharmony_ci
3297db96d56Sopenharmony_ci.. data:: S_IXOTH
3307db96d56Sopenharmony_ci
3317db96d56Sopenharmony_ci   Others have execute permission.
3327db96d56Sopenharmony_ci
3337db96d56Sopenharmony_ci.. data:: S_ENFMT
3347db96d56Sopenharmony_ci
3357db96d56Sopenharmony_ci   System V file locking enforcement.  This flag is shared with :data:`S_ISGID`:
3367db96d56Sopenharmony_ci   file/record locking is enforced on files that do not have the group
3377db96d56Sopenharmony_ci   execution bit (:data:`S_IXGRP`) set.
3387db96d56Sopenharmony_ci
3397db96d56Sopenharmony_ci.. data:: S_IREAD
3407db96d56Sopenharmony_ci
3417db96d56Sopenharmony_ci   Unix V7 synonym for :data:`S_IRUSR`.
3427db96d56Sopenharmony_ci
3437db96d56Sopenharmony_ci.. data:: S_IWRITE
3447db96d56Sopenharmony_ci
3457db96d56Sopenharmony_ci   Unix V7 synonym for :data:`S_IWUSR`.
3467db96d56Sopenharmony_ci
3477db96d56Sopenharmony_ci.. data:: S_IEXEC
3487db96d56Sopenharmony_ci
3497db96d56Sopenharmony_ci   Unix V7 synonym for :data:`S_IXUSR`.
3507db96d56Sopenharmony_ci
3517db96d56Sopenharmony_ciThe following flags can be used in the *flags* argument of :func:`os.chflags`:
3527db96d56Sopenharmony_ci
3537db96d56Sopenharmony_ci.. data:: UF_NODUMP
3547db96d56Sopenharmony_ci
3557db96d56Sopenharmony_ci   Do not dump the file.
3567db96d56Sopenharmony_ci
3577db96d56Sopenharmony_ci.. data:: UF_IMMUTABLE
3587db96d56Sopenharmony_ci
3597db96d56Sopenharmony_ci   The file may not be changed.
3607db96d56Sopenharmony_ci
3617db96d56Sopenharmony_ci.. data:: UF_APPEND
3627db96d56Sopenharmony_ci
3637db96d56Sopenharmony_ci   The file may only be appended to.
3647db96d56Sopenharmony_ci
3657db96d56Sopenharmony_ci.. data:: UF_OPAQUE
3667db96d56Sopenharmony_ci
3677db96d56Sopenharmony_ci   The directory is opaque when viewed through a union stack.
3687db96d56Sopenharmony_ci
3697db96d56Sopenharmony_ci.. data:: UF_NOUNLINK
3707db96d56Sopenharmony_ci
3717db96d56Sopenharmony_ci   The file may not be renamed or deleted.
3727db96d56Sopenharmony_ci
3737db96d56Sopenharmony_ci.. data:: UF_COMPRESSED
3747db96d56Sopenharmony_ci
3757db96d56Sopenharmony_ci   The file is stored compressed (macOS 10.6+).
3767db96d56Sopenharmony_ci
3777db96d56Sopenharmony_ci.. data:: UF_HIDDEN
3787db96d56Sopenharmony_ci
3797db96d56Sopenharmony_ci   The file should not be displayed in a GUI (macOS 10.5+).
3807db96d56Sopenharmony_ci
3817db96d56Sopenharmony_ci.. data:: SF_ARCHIVED
3827db96d56Sopenharmony_ci
3837db96d56Sopenharmony_ci   The file may be archived.
3847db96d56Sopenharmony_ci
3857db96d56Sopenharmony_ci.. data:: SF_IMMUTABLE
3867db96d56Sopenharmony_ci
3877db96d56Sopenharmony_ci   The file may not be changed.
3887db96d56Sopenharmony_ci
3897db96d56Sopenharmony_ci.. data:: SF_APPEND
3907db96d56Sopenharmony_ci
3917db96d56Sopenharmony_ci   The file may only be appended to.
3927db96d56Sopenharmony_ci
3937db96d56Sopenharmony_ci.. data:: SF_NOUNLINK
3947db96d56Sopenharmony_ci
3957db96d56Sopenharmony_ci   The file may not be renamed or deleted.
3967db96d56Sopenharmony_ci
3977db96d56Sopenharmony_ci.. data:: SF_SNAPSHOT
3987db96d56Sopenharmony_ci
3997db96d56Sopenharmony_ci   The file is a snapshot file.
4007db96d56Sopenharmony_ci
4017db96d56Sopenharmony_ciSee the \*BSD or macOS systems man page :manpage:`chflags(2)` for more information.
4027db96d56Sopenharmony_ci
4037db96d56Sopenharmony_ciOn Windows, the following file attribute constants are available for use when
4047db96d56Sopenharmony_citesting bits in the ``st_file_attributes`` member returned by :func:`os.stat`.
4057db96d56Sopenharmony_ciSee the `Windows API documentation
4067db96d56Sopenharmony_ci<https://msdn.microsoft.com/en-us/library/windows/desktop/gg258117.aspx>`_
4077db96d56Sopenharmony_cifor more detail on the meaning of these constants.
4087db96d56Sopenharmony_ci
4097db96d56Sopenharmony_ci.. data:: FILE_ATTRIBUTE_ARCHIVE
4107db96d56Sopenharmony_ci          FILE_ATTRIBUTE_COMPRESSED
4117db96d56Sopenharmony_ci          FILE_ATTRIBUTE_DEVICE
4127db96d56Sopenharmony_ci          FILE_ATTRIBUTE_DIRECTORY
4137db96d56Sopenharmony_ci          FILE_ATTRIBUTE_ENCRYPTED
4147db96d56Sopenharmony_ci          FILE_ATTRIBUTE_HIDDEN
4157db96d56Sopenharmony_ci          FILE_ATTRIBUTE_INTEGRITY_STREAM
4167db96d56Sopenharmony_ci          FILE_ATTRIBUTE_NORMAL
4177db96d56Sopenharmony_ci          FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
4187db96d56Sopenharmony_ci          FILE_ATTRIBUTE_NO_SCRUB_DATA
4197db96d56Sopenharmony_ci          FILE_ATTRIBUTE_OFFLINE
4207db96d56Sopenharmony_ci          FILE_ATTRIBUTE_READONLY
4217db96d56Sopenharmony_ci          FILE_ATTRIBUTE_REPARSE_POINT
4227db96d56Sopenharmony_ci          FILE_ATTRIBUTE_SPARSE_FILE
4237db96d56Sopenharmony_ci          FILE_ATTRIBUTE_SYSTEM
4247db96d56Sopenharmony_ci          FILE_ATTRIBUTE_TEMPORARY
4257db96d56Sopenharmony_ci          FILE_ATTRIBUTE_VIRTUAL
4267db96d56Sopenharmony_ci
4277db96d56Sopenharmony_ci   .. versionadded:: 3.5
4287db96d56Sopenharmony_ci
4297db96d56Sopenharmony_ciOn Windows, the following constants are available for comparing against the
4307db96d56Sopenharmony_ci``st_reparse_tag`` member returned by :func:`os.lstat`. These are well-known
4317db96d56Sopenharmony_ciconstants, but are not an exhaustive list.
4327db96d56Sopenharmony_ci
4337db96d56Sopenharmony_ci.. data:: IO_REPARSE_TAG_SYMLINK
4347db96d56Sopenharmony_ci          IO_REPARSE_TAG_MOUNT_POINT
4357db96d56Sopenharmony_ci          IO_REPARSE_TAG_APPEXECLINK
4367db96d56Sopenharmony_ci
4377db96d56Sopenharmony_ci   .. versionadded:: 3.8
438