首页 > 解决方案 > 使用 pathlib 查找单个 csv 文件的最简单方法

问题描述

csv我想使用 读取子文件夹foo中唯一的文件pahtlib,而不必明确指定名称。这样,如果文件名发生变化,代码仍然有效,但只有一个csv文件的前提条件foo仍然有效。

现在我做

from pathlib import Path

foo_dir = Path.cwd() / 'foo'
for file in foo_dir.glob('*'):
    if file.is_file() & (file.suffix = '.csv'):
        csv_file = file
        break 

这是......嗯,它有效,但它有点罗嗦。在不牺牲可读性的情况下,我能做些什么更简单的事情?

PS如何修改上面的代码,以防万一没有csv文件foo,它会引发错误?

标签: pythonpathlib

解决方案


pathlib.Path.glob是生成pathlib.Path对象的生成器,因此您可以调用next它以仅使用生成器中的第一个路径对象。您可以提供一个可选参数来next防止StopIteration在不存在 CSV 文件时引发异常(在这种情况下,next返回None)。

from pathlib import Path

if (path := next(Path("dir/to/file").glob("*.csv"), None)) is None:
    print("No .csv file present!")
else:
    print(path)

或者

from pathlib import Path

try:
    path = next(Path("dir/to/file").glob("*.csv"))
except StopIteration:
    raise RuntimeError("No .csv file present!")

推荐阅读