I ran into this today and thought I'd share what I learned. The syscall chflags does not exist in Linux, so when compiling Python it notices this and does not provide os.chflags().
chattr(1) on the other hand uses an ioctl() of EXT2_IOC_SETFLAGS to set the attributes (e2fsprogs-1.42.13's lib/e2p/fsetflags.c): | fd = open (name, OPEN_FLAGS); | if (fd == -1) | return -1; | f = (int) flags; | r = ioctl (fd, EXT2_IOC_SETFLAGS, &f); | if (r == -1) | save_errno = errno; | close (fd); So you could (instead of executing chattr(1)) call Python's fcntl.ioctl() to perform that action. It would probably be very nice if Python's os.chflags() would DWIM (and if someone brings this to Python please report here), but on the other hand I can also understand the paradigm to keep low-level functions "dumb", i. e. a function where the user expects that a simple syscall is made should only do that and nothing more. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/969032 Title: Python os module lacks the chflags/lchflags methods To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/969032/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs