3

rwxrwxr-xディレクトリを指定して、775 ( ) パーミッションを持つそのディレクトリ内のすべてのディレクトリを返す Python プログラムが必要です。

ありがとう!

4

5 に答える 5

8

OPが望んでいることは完全には明らかではありませんが、どちらの答えも再帰しま​​せん。これは再帰的なアプローチです(テストされていませんが、アイデアはわかります):

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

同様のことがstatの stdlib ドキュメントに記載されてい ます。

于 2009-04-01T11:31:27.520 に答える
6

osモジュールを見てください。特にos.statで許可ビットを調べます。

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
于 2009-04-01T10:40:15.630 に答える
2

ブライアンの答えに基づくコンパクトジェネレーター:

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))
于 2009-04-01T12:06:14.643 に答える
0

それはpythonである必要がありますか?

find を使用してそれを行うこともできます。

「find . -perm 775」

于 2009-04-01T10:39:07.147 に答える