【问题标题】:How can I read four specific lines of a file without reading the whole file in python?如何在不读取 python 中的整个文件的情况下读取文件的四个特定行?
【发布时间】:2016-04-26 02:27:31
【问题描述】:

我需要在 python 中读取文件的 4 个特定行。我不想阅读所有文件然后从中取出四个(为了方便起见)。有谁知道这是怎么做到的吗? 谢谢!

P。 S. 我使用了以下代码,但显然它读取了所有文件,然后从中取出 4 个。

a=open("file", "r")
b=a.readlines() [c:d]

【问题讨论】:

  • 文件有多大?
  • 他们建议在那个问题中使用linecache
  • 这不是一个很好的解决方案,因为它将整个文件读入内存......但我怀疑在那个问题的某个地方确实有一个答案可以回答 OP 问题
  • 啊,我明白了,感谢@JoranBeasley 的澄清

标签: python


【解决方案1】:

你必须至少阅读你感兴趣的行...你可以使用 islice 来抓取一个切片

interesting_lines = list(itertools.islice(a,c,d))

但它仍然会读到这些行

【讨论】:

    【解决方案2】:

    文件,至少在 Mac 和 Windows 以及 Linux 和其他 UNIXy 系统上,只是字节流;文件结构中没有“行”的概念,只是恰好代表换行符的字节。因此,在文件中找到第 N 行的唯一方法是从头开始读取,直到找到 (N-1) 个换行符。您不必存储您扫描的所有内容,但您必须阅读它。

    然后您必须从该点读取和存储,直到找到另外 4 个换行符。

    您可以在 Python 中执行此操作,但我不清楚与使用读取量超过所需的直接方法相比,这是一种胜利;对我来说感觉像是过早的优化。

    【讨论】:

    • 您不一定要阅读整个文件。如果您知道这些行的长度,您可以找到合适的位置,然后只阅读四行。
    猜你喜欢
    • 2019-07-09
    • 2013-11-29
    • 1970-01-01
    • 2016-08-14
    • 2017-01-19
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多