对os.stat(myfile).st_mode更好的assertEqual()

gue*_*tli 2 python readability chmod stat

我有一个代码检查文件的st_mode:

self.assertEqual(16877, os.stat(my_directory).st_mode)
Run Code Online (Sandbox Code Playgroud)

只有老派unix专家能够16877流利地解读整数值.

是否有更可读的方法来检查这个值?

sbe*_*kov 6

您可以使用已定义的constats.它们可以在stat(docs)中找到.他们是:

stat.S_IRUSR 对于所有者读取权限,

stat.S_IWUSR 对于所有者写入权限,

stat.S_IXUSR 对于所有者执行权限,

stat.S_IRGRP 对于组阅读权限,

stat.S_IWGRP 对于组写权限,

stat.S_IXGRP 对于组执行权限,

stat.S_IROTH 为他人阅读许可,

stat.S_IWOTH 为他人写的许可,

stat.S_IXOTH 对于其他人执行许可,

stat.S_IFDIR 目录.

它们可以使用按位或组合|.然后你的代码看起来像:

import stat
import os

permissions = (stat.S_IFDIR | 
               stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |
               stat.S_IRGRP | stat.S_IXGRP |
               stat.S_IROTH | stat.S_IXOTH)
self.assertEqual(permissions, os.stat(my_directory).st_mode)
Run Code Online (Sandbox Code Playgroud)