Python:获取所有空目录的列表
Python中的OS 模块用于与操作系统交互。该模块附带 Python 的标准实用程序模块,因此无需在外部安装它。 OS 模块中的所有函数在文件名和路径无效或不可访问的情况下,或具有正确类型但操作系统不接受的其他参数的情况下引发OSError
。
该模块的os.walk()
方法可用于列出所有空目录。此方法基本上在目录树中自顶向下或自底向上生成文件名。对于以目录 top 为根的树中的每个目录(包括 top 本身),它会产生一个 3 元组( dirpath
、 dirnames
、 filenames
)。
- dirpath:一个字符串,它是目录的路径
- dirnames:根目录下的所有子目录。
- 文件名:来自根目录和目录的所有文件。
Syntax: os.walk(top, topdown=True, onerror=None, followlinks=False)
Parameters:
top: Starting directory for os.walk().
topdown: If this optional argument is True then the directories are scanned from top-down otherwise from bottom-up. This is True by default.
onerror: It is a function that handles errors that may occur.
followlinks: This visits directories pointed to by symlinks, if set to True.
Return Type: For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames).
示例:假设目录如下所示 -
我们想打印出所有的空目录。由于此方法返回子目录和文件的元组,我们将检查每个元组的大小,如果大小为零,则目录将为空。下面是实现。
# Python program to list out
# all the empty directories
import os
# List to store all empty
# directories
empty = []
# Traversing through Test
for root, dirs, files in os.walk('Test'):
# Checking the size of tuple
if not len(dirs) and not len(files):
# Adding the empty directory to
# list
empty.append(root)
Print("Empty Directories:")
print(empty)
输出:
Empty Directories:
['Test\\A\\A2', 'Test\\B', 'Test\\D\\E']
上面的代码可以使用List Comprehension来缩短,这是一种更 Pythonic 的方式。下面是实现。
# Python program to list out
# all the empty directories
import os
# List comprehension to enter
# all empty directories to list
empty = [root for root, dirs, files, in os.walk('Test')
if not len(dirs) and not len(files)]
print("Empty Directories:")
print(empty)
输出:
Empty Directories:
['Test\\A\\A2', 'Test\\B', 'Test\\D\\E']