我的第一次尝试得到了这个结果:
if [p for p in Path().glob('*.ext')]:
我认为这是低效的,因为在继续之前,列表理解必须消耗整个生成器对象(.glob()
返回)。
我的第二次尝试是在生成器上手动调用 .__next__()
并手动捕获 StopIteration
,但我不认为这可以在一行中完成:
try:
Path().glob('*.ext').__next__()
except StopIteration:
# no ".ext" files exist here
else:
# at least one ".ext" file exists here
总的来说,我是一个 Python 菜鸟,我想知道是否可以使用单行解决方案(至少比我的第一次尝试更有效)。
最佳答案
使用any()
:
if any(p for p in Path().glob('*.ext')):
# ...
或者更简单地说,
if any(Path().glob('*.ext')):
# ...
关于Python3 pathlib 单行代码用于检查 Path 是否至少有一个特定扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62597301/