使用pathlib查找单个csv文件的最简单方法

2024-09-30 20:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用pahtlib读取子文件夹foo中唯一的csv文件,而不必显式指定名称。这样,如果文件名更改,代码仍然有效,但是foo中只有一个csv文件的前提条件仍然有效

现在我知道了

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我如何修改上面的代码,以便在foo中没有csv文件的情况下抛出错误


Tags: 文件csvpath代码from文件夹名称foo
2条回答

pathlib.Path.glob是一个生成pathlib.Path对象的生成器,因此您可以在其上调用next以仅使用生成器中的第一个路径对象。您可以向next提供一个可选参数,以防止在不存在CSV文件时引发StopIteration异常(在本例中,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!")

我会用这样的东西

from glob import glob

try:
    csv_file = glob('foo/*.csv')[0]
except IndexError:
    raise RuntimeError('No csv file found')

相关问题 更多 >