Я пытаюсь найти права доступа к файлу на моем компьютере с 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. Кто-нибудь знает, почему я получаю эти проблемы?






Я уверен, что внутри модуля os есть много функций на основе файлов. Если вы запустите os.stat(имя файла), вы всегда сможете интерпретировать результаты.
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