2016-12-16 8 views
2

Мне нужно решение, как распечатать разрешения файлов в скрипте python. Идея состоит в том, чтобы передать команду оболочки $: ls -l в сценарий python, откуда я распечатаю строки с «дополнительным объяснением». НапримерПечать разрешений файлов/папок

-rwxrwxr-x

Дополнительное объяснение было бы:

Owner of the file has reading rights, writing right, but doesn't have execution rights. Group has reading rights, writing right and execution rights.

Таким образом, вместо того, чтобы охватить все возможные случаи, кто имеет какие права, есть ли более простой способ сделать это, кроме проверяя каждый случай с помощью if условным?

+0

Я не уверен, что именно вы спрашиваете о? Как получить бит доступа для файла или как распечатать их в удобном для пользователя формате? – Andrey

+3

Можете ли вы показать свою попытку решения? – 0xtvarun

+0

Разделите на 3 группы по 3 символа (игнорируя липкий бит) - тогда вы вызываете функцию, передающую 3 символа, чтобы описать плюс имя («владелец» или «группа» или «все остальные»). В чем проблема? – Useless

ответ

1

Вот несколько кодов, которые помогут вам начать работу.

Сначала мы создаем список с именем modes, содержащий все комбинации тех, у кого есть разрешение и вид разрешений, которые у них есть. Затем мы последовательно перебираем строку режима и наш список modes, захватывая соответствующую комбинацию из modes, если строка режима не имеет - в этой позиции.

modes = [(who, kind) for who in ('user', 'group', 'others') 
    for kind in ('read', 'write', 'execute')] 

def explain_modestring(modestring): 
    return ', '.join([' can '.join(t) 
     for c, t in zip(modestring[1:], modes) if c != '-']) 

for s in ('-rwxrwxrwx', '-rwxr-xr--', '-r--------'): 
    print(s, explain_modestring(s)) 

выход

-rwxrwxrwx user can read, user can write, user can execute, group can read, group can write, group can execute, others can read, others can write, others can execute 
-rwxr-xr-- user can read, user can write, user can execute, group can read, group can execute, others can read 
-r-------- user can read 
+0

Да, это точный результат, к которому я стремился. Очень признателен – monolith937

Смежные вопросы