猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
只读取特定行
只读取特定行
我使用for循环来读取文件,但是我只想读取特定的行,比如第26行和第30行。有什么内置的功能来实现这一点吗?
谢谢
三国纷争
浏览 461
回答 3
3回答
皈依舞
如果要读取的文件很大,并且不希望立即在内存中读取整个文件:fp = open("file")for i, line in enumerate(fp): if i == 25: # 26th line elif i == 29: # 30th line elif i > 29: breakfp.close()请注意i == n-1为n这条线。在Python2.6或更高版本中:with open("file") as fp: for i, line in enumerate(fp): if i == 25: # 26th line elif i == 29: # 30th line elif i > 29: break
0
0
0
Smart猫小萌
一种快速和紧凑的办法可以是:def picklines(thefile, whatlines): return [x for i, x in enumerate(thefile) if i in whatlines]这将接受任何打开的类似文件的对象。thefile(留待调用方从磁盘文件打开它,还是通过套接字或其他类似文件的流打开)和一组基于零的行索引。whatlines,并返回一个列表,具有较低的内存占用和合理的速度。如果要返回的行数很大,您可能更喜欢生成器:def yieldlines(thefile, whatlines): return (x for i, x in enumerate(thefile) if i in whatlines)-注意,唯一的区别来自于使用圆角括号,而不是使用圆括号。return语句,分别进行列表理解和生成器表达式。还请注意,尽管提到了“行”和“文件”,多更一般的-他们会努力的任何可迭代的,无论是打开的文件还是任何其他的,返回一个列表(或生成器)的项目,根据他们的累进项目编号。因此,我建议使用更合适的通用名称;-)。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Python
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续