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

Python 使用pathlib查找单个csv文件的最简单方法,python,pathlib,Python,Pathlib,我想使用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

我想使用
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
文件的情况下,它会抛出错误?

我会使用类似的方法

从全局导入全局
尝试:
csv_file=glob('foo/*.csv')[0]
除索引器外:
引发运行时错误('未找到csv文件')

我会用这样的东西

从全局导入全局
尝试:
csv_file=glob('foo/*.csv')[0]
除索引器外:
引发运行时错误('未找到csv文件')

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



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



oooo我喜欢这个-你能不能也添加
尝试,除了
选项?我猜类似于
try:csv\u file=next(foo\u dir.glob('*.csv'))的东西除了StopIteration:raise RuntimeError('No csv file found')
@DeltaIV Right,这是另一种选择。我会添加它。oooo我喜欢这个-你能不能也添加
尝试,除了
备选方案?我猜类似于
try:csv\u file=next(foo\u dir.glob('*.csv'))的东西除了StopIteration:raise RuntimeError('No csv file found')
@DeltaIV Right,这是另一种选择。我再补充一句。这能回答你的问题吗。具体来说,这能回答你的问题吗。具体来说,但是。。。。甚至标题上也写着“使用pathlib”……但是。。。。甚至标题上也写着“使用pathlib”。。。
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!")