Pregunta

quiero un programa de Python que da un directorio, devolverá todos los directorios dentro de ese directorio que tienen permisos (775) rwxrwxr-x

Gracias!

¿Fue útil?

Solución

Ni recursivamente respuesta, aunque no está del todo claro que eso es lo que quiere el OP. Aquí hay un enfoque recursivo (no probado, pero se entiende la idea):

import os
import stat
import sys

MODE = "775"

def mode_matches(mode, file):
    """Return True if 'file' matches 'mode'.

    'mode' should be an integer representing an octal mode (eg
    int("755", 8) -> 493).
    """
    # Extract the permissions bits from the file's (or
    # directory's) stat info.
    filemode = stat.S_IMODE(os.stat(file).st_mode)

    return filemode == mode

try:
    top = sys.argv[1]
except IndexError:
    top = '.'

try:
    mode = int(sys.argv[2], 8)
except IndexError:
    mode = MODE

# Convert mode to octal.
mode = int(mode, 8)

for dirpath, dirnames, filenames in os.walk(top):
    dirs = [os.path.join(dirpath, x) for x in dirnames]
    for dirname in dirs:
        if mode_matches(mode, dirname):
            print dirname

Algo similar se describe en la documentación de stdlib stat .

Otros consejos

Tome un vistazo a la OS módulo. En particular os.stat mirar los bits de permiso.

import  os

for filename in os.listdir(dirname):
   path=os.path.join(dirname, filename)
   if os.path.isdir(path):
       if (os.stat(path).st_mode & 0777) == 0775:
           print path

generador compacto basado en la respuesta de Brian:

import os

(fpath for fpath 
   in (os.path.join(dirname,fname) for fname in os.listdir(dirname)) 
   if (os.path.isdir(fpath) and (os.stat(fpath).st_mode & 0777) == 0775))

¿Tiene que ser pitón?

También puede utilizar encontrar que hacer lo siguiente:

"encontrar. -Perm 775"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top