Python lstat给出的值不同于系统stat

时间:2019-07-08 16:45:35

标签: python python-3.x

我正在尝试在Windows计算机上查找文件的文件权限。取决于我是否使用python方式,我始终可以为所有经过测试的文件获取666。如果我使用系统stat -c %a命令,则会得到不同的响应。

我也尝试过

$ stat -c %a dummy.txt
644
>>> import os
>>> print(oct(os.lstat("dummy.txt").st_mode))
0o100666
>>> import os
>>> os.access("dummy.txt", os.X_OK) 
True

我希望响应为0o100644,并且执行访问权限为False。有谁知道为什么我会遇到这些问题?

1 个答案:

答案 0 :(得分:1)

我不确定os模块内部有很多基于文件的功能。如果您运行os.stat(filename),则始终可以插入结果。

http://docs.python.org/library/stat.html

$ touch dummy.txt
$ stat -c %a dummy.txt
644

os.stat返回644

In [1]: import os                                                                                                                                                                             

In [2]: from stat import *                                                                                                                                                                    

In [3]: oct(os.stat("dummy.txt")[ST_MODE])                                                                                                                                                    
Out[3]: '0o100644'

获取权限的另一种方法:

from os import popen                                                                                                                                                                  

cmd = "stat -c '%A %a %n' *"                                                                                                                                                          

fname = "dummy.txt" 
for i in popen(cmd): 
    p, m, n = i.split() 
    if n != fname: 
        continue 
    print(m) 
    break 

输出

644