如何从文件中获取 Unix 权限掩码?
如何使用 python 在 *nix 上获取文件的权限掩码,例如 644 或 755?
有没有任何函数或类可以做到这一点?非常感谢!
How can I get a file's permission mask like 644 or 755 on *nix using python?
Is there any function or class for doing that? Thank you very much!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
如果路径允许访问,
os.access(path, mode)
方法返回True
,如果不允许,则返回False
。可用模式有:
例如,检查文件/tmp/test.sh是否具有执行权限
os.access(path, mode)
method returnsTrue
if access is allowed on path,False
if not.available modes are :
for example, checking file /tmp/test.sh has execute permission
这是检查目录权限的简单方法。
标志列表如下:
Here is a simple way to check the permissions of a directory .
The flag list is herebelow :
我确信 os 模块中有很多基于文件的函数。如果您运行 os.stat(filename) ,您始终可以解释结果。
http://docs.python.org/library/stat.html
There are a lot of file based functions inside the os module im sure. If you run
os.stat(filename)
you can always interprate the results.http://docs.python.org/library/stat.html
os.stat
类似于c-lib stat(linux上man 2 stat查看信息)os.stat
is analogous to the c-lib stat (man 2 stat on linux to see the information)如果需要,您可以使用 Popen 运行 Bash stat 命令:
普通的 Bash 命令:
然后使用 Python:
如果您想搜索目录,这里还有另一种方法:
You can just run a Bash stat command with Popen if you want:
The normal Bash command:
And then with Python:
And here's another way if you feel like searching the directory:
os.stat
是 stat(2) 的包装器系统调用接口。从这里您将认识典型的八进制权限。
您实际上只对较低的位感兴趣,因此您可以砍掉其余部分:
旁注:上面的部分确定文件类型,例如:
os.stat
is a wrapper around the stat(2) system call interface.From here you'll recognize the typical octal permissions.
You are really only interested in the lower bits, so you could chop off the rest:
Sidenote: the upper parts determine the filetype, e.g.:
我认为这是获取文件权限位的最清晰方法:
如果文件是符号链接,则
os.lstat()
将为您提供链接本身的模式,而os.stat()
取消引用链接。因此,我发现 os.lstat() 是最常用的。stat.S_IMODE()
获取“文件的权限位,加上粘性位、set-group-id 和 set-user-id 位”。这是一个示例案例,给定常规文件“testfile”及其符号链接“testlink”:
该脚本为我输出以下内容:
I think this is the clearest way of getting a file's permission bits:
If the file is a symlink,
os.lstat()
will give you the mode of the link itself, whereasos.stat()
dereferences the link. Therefore I findos.lstat()
the most generally useful.stat.S_IMODE()
gets "the file’s permission bits, plus the sticky bit, set-group-id, and set-user-id bits".Here's an example case, given regular file "testfile" and symlink to it, "testlink":
This script outputs the following for me:
如果您不想弄清楚 stat 的含义,另一种方法是使用 os.access 命令 http://docs.python.org/library/os.html#os.access
但请阅读有关可能的安全问题的文档
例如,检查具有读/写权限的文件 test.dat 的权限
Another way to do it if you don't want to work out what stat means is to use the os.access command http://docs.python.org/library/os.html#os.access
BUT read the docs about possible security issues
For instance to check permissions on the file test.dat which has read/write permissions