Python Script для поиска файла - PullRequest
       4

Python Script для поиска файла

1 голос
/ 08 февраля 2011

Я просматривал один из скриптов python, который ищет файлы и перечисляет их разрешения.Я все еще учусь на Python, и во время изучения этого кода я столкнулся со следующими вопросами:

В строках ниже, что подразумевается под строкой "mode = stat.SIMODE (os.lstat(file) [stat.ST_MODE]) "? какое значение возвращается в " mode "?и как это работает в предоставлении информации о разрешениях?Был бы признателен, если бы кто-то мог объяснить это.

Кроме того, мне нужно понять , как работают вложенные циклы for в этом сегменте в отношении получения желаемого результата преобразования имен файлов и соответствующих разрешений?

А каково здесь значение «уровень»?

Буду очень признателен, если кто-нибудь сможет ответить на поставленные выше вопросы и дать какое-либо соответствующее руководство.Заранее спасибо.

Весь код:

import stat, sys, os, string, commands

try:
    #run a 'find' command and assign results to a variable
    pattern = raw_input("Enter the file pattern to search for:\n")
    commandString = "find " + pattern
    commandOutput = commands.getoutput(commandString)
    findResults = string.split(commandOutput, "\n")

    #output find results, along with permissions
    print "Files:"
    print commandOutput
    print "================================"
    for file in findResults:
        mode=stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
        print "\nPermissions for file ", file, ":"
        for level in "USR", "GRP", "OTH":
            for perm in "R", "W", "X":
                if mode & getattr(stat,"S_I"+perm+level):
                    print level, " has ", perm, " permission"
                else:
                    print level, " does NOT have ", perm, " permission"
except:
    print "There was a problem - check the message above"

1 Ответ

1 голос
/ 08 февраля 2011

Интерактивная оболочка интерпретатора Python - это хорошее место, чтобы поиграться с фрагментами кода Python, чтобы понять их.Например, чтобы получить информацию о режиме в вашем скрипте:

>>> import os, stat
>>> os.lstat("path/to/some/file")
posix.stat_result(st_mode=33188, st_ino=834121L, st_dev=2049L, ...
>>> stat.ST_MODE
0
>>> os.lstat("path/to/some/file")[0]
33188
>>> stat.S_IMODE(33188)
420

Теперь вы знаете значения, проверьте Документы Python , чтобы получить их значение.

Ваналогичным образом вы можете попытаться ответить на другие вопросы самостоятельно.

ОБНОВЛЕНИЕ: Значение mode является побитовой ИЛИ комбинацией различных флагов режима .Вложенный цикл «вручную» создает имена этих флагов, использует getattr для получения их значений, а затем проверяет, включает ли mode эти значения.

...