python - 枚举文件对象中的下一行,直到 n 或 EOF
问题描述
在 python <3.7 中,我的代码有一个生成器,它遍历文件对象的行直到一个固定值:
def parse_header(file_object):
for index, line in enumerate(next(file_object) for x in range(max_value)):
# do stuff to index and line
如果在 之前首先达到 EOF max_value
,则 StopIteration 以前是允许的。但是,对于PEP 479,RuntimeError 会导致问题,我无法弄清楚如何将其重写为返回。
解决方案
坦率地说,你的代码看起来很奇怪。
我会做
def parse_header(file_object):
for index, line in enumerate(file_object):
if index == max_value:
break
print(index, line)
或者
def parse_header(file_object):
for index, line in zip(range(max_value), file_object):
print(index, line)
两者都适用于 Python 3.7.3
使用后,parse_header(file_object)
您仍然可以获得下一行next(file_object)
推荐阅读
- spring-boot - 通过 commons-fileupload 上传文件时 IOUtils.copy() 性能下降
- typescript - TypeScript 中的枚举集合
- java - 这个 Android studio 警告会不会导致将来出现任何错误?(是否应该考虑进行故障排除?)
- powershell - Powershell脚本最终无法正常使用“暂停”
- r - R:如何使用 expect_success 函数进行单元测试?
- python-3.x - 在python中使用split从字符串中提取子域
- python - 如何在 python 中读取 JSON 对象?
- sql - 使用选择列分组我无法在分组依据子句中输入
- kubernetes - Kubernetes 如何使用通用数据库创建容器化应用程序的副本?
- c# - 如何从 linq 查询中获取正确的值?