python - 使用 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
,它会引发错误?
解决方案
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!")
推荐阅读
- flutter - Flutter - 平台不允许不安全的套接字连接:10.0.2.2
- javascript - 如何在 React 中打印组件?
- sql-server - Visual Studio 2019 从 Azure 数据库导出结果失败
- php - 在 wordpress 插件中编辑日期
- php - 对具有重复元素值的二维数组中的数组元素求和
- html - 我想让下拉菜单仅在移动视图中显示
- parsing - Haskell:If-Block Evaluator 在 GHCI 中正常工作,但在通过解析表达式评估时不能正常工作
- orm - Odoo:模型上的无效字段
- sql-server - 在 SSRS 报告的 URL 中传递报告数据
- reactjs - React Hooks 的匿名函数转置到 ES5 中的第一个因素是不是总是 0?