diff options
Diffstat (limited to 'src/snakeoil/osutils/native_readdir.py')
-rw-r--r-- | src/snakeoil/osutils/native_readdir.py | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/src/snakeoil/osutils/native_readdir.py b/src/snakeoil/osutils/native_readdir.py index 0efb9c92..b129a9bf 100644 --- a/src/snakeoil/osutils/native_readdir.py +++ b/src/snakeoil/osutils/native_readdir.py @@ -3,8 +3,18 @@ import errno import os -from stat import (S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFMT, S_IFREG, S_IFSOCK, S_ISDIR, - S_ISREG) +from stat import ( + S_IFBLK, + S_IFCHR, + S_IFDIR, + S_IFIFO, + S_IFLNK, + S_IFMT, + S_IFREG, + S_IFSOCK, + S_ISDIR, + S_ISREG, +) from ..mappings import ProtectedDict @@ -14,6 +24,7 @@ listdir = os.listdir # import cycle. pjoin = os.path.join + def stat_swallow_enoent(path, check, default=False, stat=os.stat): try: return check(stat(path).st_mode) @@ -22,6 +33,7 @@ def stat_swallow_enoent(path, check, default=False, stat=os.stat): return default raise + def listdir_dirs(path, followSymlinks=True): """ Return a list of all subdirectories within a directory @@ -36,11 +48,12 @@ def listdir_dirs(path, followSymlinks=True): pjf = pjoin lstat = os.lstat if followSymlinks: - return [x for x in os.listdir(path) if - stat_swallow_enoent(pjf(path, x), scheck)] + return [ + x for x in os.listdir(path) if stat_swallow_enoent(pjf(path, x), scheck) + ] lstat = os.lstat - return [x for x in os.listdir(path) if - scheck(lstat(pjf(path, x)).st_mode)] + return [x for x in os.listdir(path) if scheck(lstat(pjf(path, x)).st_mode)] + def listdir_files(path, followSymlinks=True): """ @@ -56,24 +69,28 @@ def listdir_files(path, followSymlinks=True): scheck = S_ISREG pjf = pjoin if followSymlinks: - return [x for x in os.listdir(path) if - stat_swallow_enoent(pjf(path, x), scheck)] + return [ + x for x in os.listdir(path) if stat_swallow_enoent(pjf(path, x), scheck) + ] lstat = os.lstat - return [x for x in os.listdir(path) if - scheck(lstat(pjf(path, x)).st_mode)] + return [x for x in os.listdir(path) if scheck(lstat(pjf(path, x)).st_mode)] + # we store this outside the function to ensure that # the strings used are reused, thus avoiding unneeded # allocations -d_type_mapping = ProtectedDict({ - S_IFREG: "file", - S_IFDIR: "directory", - S_IFLNK: "symlink", - S_IFCHR: "chardev", - S_IFBLK: "block", - S_IFSOCK: "socket", - S_IFIFO: "fifo", -}) +d_type_mapping = ProtectedDict( + { + S_IFREG: "file", + S_IFDIR: "directory", + S_IFLNK: "symlink", + S_IFCHR: "chardev", + S_IFBLK: "block", + S_IFSOCK: "socket", + S_IFIFO: "fifo", + } +) + def readdir(path): """ |