只读取特定行

只读取特定行

我使用for循环来读取文件,但是我只想读取特定的行,比如第26行和第30行。有什么内置的功能来实现这一点吗?

谢谢


三国纷争
浏览 442回答 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

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语句,分别进行列表理解和生成器表达式。还请注意,尽管提到了“行”和“文件”,多更一般的-他们会努力的任何可迭代的,无论是打开的文件还是任何其他的,返回一个列表(或生成器)的项目,根据他们的累进项目编号。因此,我建议使用更合适的通用名称;-)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python