fork(2) download
  1. S_IFDIR = 0o040000 # directory
  2. S_IFCHR = 0o020000 # character device
  3. S_IFBLK = 0o060000 # block device
  4. S_IFREG = 0o100000 # regular file
  5. S_IFIFO = 0o010000 # fifo (named pipe)
  6. S_IFLNK = 0o120000 # symbolic link
  7. S_IFSOCK = 0o140000 # socket file
  8.  
  9. S_ISUID = 0o4000 # set UID bit
  10. S_ISGID = 0o2000 # set GID bit
  11. S_ENFMT = S_ISGID # file locking enforcement
  12. S_ISVTX = 0o1000 # sticky bit
  13. S_IREAD = 0o0400 # Unix V7 synonym for S_IRUSR
  14. S_IWRITE = 0o0200 # Unix V7 synonym for S_IWUSR
  15. S_IEXEC = 0o0100 # Unix V7 synonym for S_IXUSR
  16. S_IRWXU = 0o0700 # mask for owner permissions
  17. S_IRUSR = 0o0400 # read by owner
  18. S_IWUSR = 0o0200 # write by owner
  19. S_IXUSR = 0o0100 # execute by owner
  20. S_IRWXG = 0o0070 # mask for group permissions
  21. S_IRGRP = 0o0040 # read by group
  22. S_IWGRP = 0o0020 # write by group
  23. S_IXGRP = 0o0010 # execute by group
  24. S_IRWXO = 0o0007 # mask for others (not in group) permissions
  25. S_IROTH = 0o0004 # read by others
  26. S_IWOTH = 0o0002 # write by others
  27. S_IXOTH = 0o0001 # execute by others
  28.  
  29. _filemode_table = (
  30. ((S_IFLNK, "l"),
  31. (S_IFREG, "-"),
  32. (S_IFBLK, "b"),
  33. (S_IFDIR, "d"),
  34. (S_IFCHR, "c"),
  35. (S_IFIFO, "p")),
  36.  
  37. ((S_IRUSR, "r"),),
  38. ((S_IWUSR, "w"),),
  39. ((S_IXUSR|S_ISUID, "s"),
  40. (S_ISUID, "S"),
  41. (S_IXUSR, "x")),
  42.  
  43. ((S_IRGRP, "r"),),
  44. ((S_IWGRP, "w"),),
  45. ((S_IXGRP|S_ISGID, "s"),
  46. (S_ISGID, "S"),
  47. (S_IXGRP, "x")),
  48.  
  49. ((S_IROTH, "r"),),
  50. ((S_IWOTH, "w"),),
  51. ((S_IXOTH|S_ISVTX, "t"),
  52. (S_ISVTX, "T"),
  53. (S_IXOTH, "x"))
  54. )
  55.  
  56. def filemode(mode):
  57. """Convert a file's mode to a string of the form '-rwxrwxrwx'."""
  58. perm = []
  59. for table in _filemode_table:
  60. for bit, char in table:
  61. if mode & bit == bit:
  62. perm.append(char)
  63. break
  64. else:
  65. perm.append("-")
  66. return "".join(perm)
  67.  
  68. import os
  69. print filemode(os.stat('.').st_mode)
  70.  
Success #stdin #stdout 0.08s 8832KB
stdin
Standard input is empty
stdout
drwxr-x---