You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

stat.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. """Constants/functions for interpreting results of os.stat() and os.lstat().
  2. Suggested usage: from stat import *
  3. """
  4. # XXX Strictly spoken, this module may have to be adapted for each POSIX
  5. # implementation; in practice, however, the numeric constants used by
  6. # stat() are almost universal (even for stat() emulations on non-UNIX
  7. # systems like MS-DOS).
  8. # Indices for stat struct members in tuple returned by os.stat()
  9. ST_MODE = 0
  10. ST_INO = 1
  11. ST_DEV = 2
  12. ST_NLINK = 3
  13. ST_UID = 4
  14. ST_GID = 5
  15. ST_SIZE = 6
  16. ST_ATIME = 7
  17. ST_MTIME = 8
  18. ST_CTIME = 9
  19. # Extract bits from the mode
  20. def S_IMODE(mode):
  21. return mode & 07777
  22. def S_IFMT(mode):
  23. return mode & 0170000
  24. # Constants used as S_IFMT() for various file types
  25. # (not all are implemented on all systems)
  26. S_IFDIR = 0040000
  27. S_IFCHR = 0020000
  28. S_IFBLK = 0060000
  29. S_IFREG = 0100000
  30. S_IFIFO = 0010000
  31. S_IFLNK = 0120000
  32. S_IFSOCK = 0140000
  33. # Functions to test for each file type
  34. def S_ISDIR(mode):
  35. return S_IFMT(mode) == S_IFDIR
  36. def S_ISCHR(mode):
  37. return S_IFMT(mode) == S_IFCHR
  38. def S_ISBLK(mode):
  39. return S_IFMT(mode) == S_IFBLK
  40. def S_ISREG(mode):
  41. return S_IFMT(mode) == S_IFREG
  42. def S_ISFIFO(mode):
  43. return S_IFMT(mode) == S_IFIFO
  44. def S_ISLNK(mode):
  45. return S_IFMT(mode) == S_IFLNK
  46. def S_ISSOCK(mode):
  47. return S_IFMT(mode) == S_IFSOCK
  48. # Names for permission bits
  49. S_ISUID = 04000
  50. S_ISGID = 02000
  51. S_ENFMT = S_ISGID
  52. S_ISVTX = 01000
  53. S_IREAD = 00400
  54. S_IWRITE = 00200
  55. S_IEXEC = 00100
  56. S_IRWXU = 00700
  57. S_IRUSR = 00400
  58. S_IWUSR = 00200
  59. S_IXUSR = 00100
  60. S_IRWXG = 00070
  61. S_IRGRP = 00040
  62. S_IWGRP = 00020
  63. S_IXGRP = 00010
  64. S_IRWXO = 00007
  65. S_IROTH = 00004
  66. S_IWOTH = 00002
  67. S_IXOTH = 00001