本文讨论如何在 Python 中检查生成器是否为空。
在 Python 中检查生成器是否为空是指检查路径以确保它为空。 为此,必须事先将相关路径标识为目录或文件,这使我们可以选择所需的检查方式来轻松使用。
以下代码片段显示了两个名为 filepath 和 dirpath 的占位符变量的参与。 这些变量用于识别本地文件和目录:
dirpath = "/mnt/f/code.books/articles/python"
filepath = "/mnt/f/code.books/articles/python/code/file_dir.py"
上述占位符变量可以与作为标准包的 Python 中的 os 模块一起使用。 它可以与适用于相关操作系统的对象、函数和常量一起使用。
os 模块也可以表示为 os.path 并涉及作为函数工作的 isdir()
和 isfile()
。 这些功能使用户能够区分给定的目录和任何文件。
两个函数工作时的返回值都是布尔值。
考虑以下示例:
import os
dirpath = "/mnt/f/code.books/articles/python"
filepath = "/mnt/f/code.books/articles/python/code/file_dir.py"
os.path.isfile (dirpath) # False
os.path.isdir (dirpath) # True
os.path.isfile (filepath) # True
os.path.isdir (filepath) # False
isdir()
和 isfile()
函数在此示例中分别表示为 os.path.isdir 和 os.path.isfile。 两个函数工作时的返回值都是布尔值。
这意味着这些函数的执行输出应该返回 True 或 False。 True 和 False 的返回值根据其各自的功能显示相关路径是文件还是目录。
经此确认后,在Python 3.4及以后版本可以使用另一个名为pathlib的模块。 使用此模块,面向对象的界面使用户能够轻松地使用他们的文件系统。
与 os.path 模块相比,该模块确保了实现中的简化。 它有一个 Path 类参与其工作,并接受一个路径作为参数。
在此之后,该路径返回一个 Path 对象,因此用户可以轻松地使用属性和方法链接或查询它。
看看下面的代码片段:
from pathlib import Path
dirpath = "/mnt/f/code.books/articles/python"
filepath = "/mnt/f/code.books/articles/python/code/file_dir.py"
Path (dirpath).is_file() # False
Path (dirpath).is_dir() # True
Path (filepath).is_file() # True
Path (dirpath).is_file() # False
在此代码段中,检查 Path 对象以确保它是一个目录或一个具有布尔值作为返回值的文件。 dirpath 和 filepath 变量也涉及与 is_file() 和 is_dir() 方法关联的 Path 对象。
它们的实现将返回 True 或 False 的输出,将目录或文件显示为对象。
下一步是检查生成器是否为空并且可能涉及空路径或文件。 路径或文件也可以命名为零字节文件,并且可以是没有内容或数据的不同类型。
请记住,包含没有数据的元数据的文件不属于空文件的范畴。 这甚至可能涉及包含作者的音乐文件。
可以在 macOS 和 LINUX 等平台上轻松创建空文件。 以下是如何做到这一点的片段:
$ touch emptyfile
以下代码片段显示了如何在 Windows 上执行此操作:
$ type nul > emptyfile
这样做之后,我们必须定义非空文件或空文件可以指向空文件的变量。 该空文件可能是零字节,而非空文件的大小是一个字节。
以下是一个示例:
emptyfile = "/mnt/f/code.books/articles/python/emptyfile"
nonemptyfile = "/mnt/f/code.books/articles/python/onebytefile”
有了这个,一个可选参数可以用于 next()
函数,用户可以使用它来确保生成器是空的。
这是一个代码片段:
_exhausted = object()
if next (some_generator, _exhausted) is _exhausted:
print ('empty generator')
在这个片段中,空生成器由一个耗尽的迭代器和一个对象的用法表示。 在此之后,一个 if 条件被放置在实现中,它检查具有一些生成器值的耗尽生成器。
在空生成器的情况下,条件满足,并且实现返回一个空生成器作为其输出。