当前位置: 首页 > 面试题库 >

Python-如何跳至巨大文本文件中的特定行?

鱼志学
2023-03-14
问题内容

以下代码是否有替代方法

startFromLine = 141978 # or whatever line I need to jump to

urlsfile = open(filename, "rb", 0)

linesCounter = 1

for line in urlsfile:
    if linesCounter > startFromLine:
        DoSomethingWithThisLine(line)

    linesCounter += 1

如果我正在处理一个巨大的文本文件(~15MB),其行数未知但长度不同,并且需要跳转到特定行我应该事先知道哪个号码?当我知道我至少可以忽略文件的前半部分时,我很难一一处理它们。寻找更优雅的解决方案(如果有)。


问题答案:

由于你不知道换行符在哪里,因此无法至少一次不读入文件就无法跳转。你可以执行以下操作:

# Read in the file once and build a list of line offsets
line_offset = []
offset = 0
for line in file:
    line_offset.append(offset)
    offset += len(line)
file.seek(0)

# Now, to skip to line n (with the first line being line 0), just do
file.seek(line_offset[n])


 类似资料:
  • 问题内容: 以下代码是否有替代方法: 如果我正在处理一个巨大的文本文件,其行数未知但长度不同,并且需要跳转到特定行我事先知道哪个号码?当我知道我至少可以忽略文件的前半部分时,我很难一一处理它们。寻找更优雅的解决方案(如果有)。 问题答案: 行缓存: 该模块允许人们从Python源文件中获取任何行,同时尝试使用缓存在内部进行优化,这是从单个文件读取许多行的常见情况。模块使用它来检索源行以包含在格式化

  • 问题内容: 我有一个巨大的文本文件(〜1GB),可惜我使用的文本编辑器无法读取这么大的文件。但是,如果我可以将其分为两部分或三部分,那就没问题了,因此,作为练习,我想用python编写一个程序来做到这一点。 我想让程序执行的操作是找到文件的大小,将该数字分成多个部分,然后对于每个部分,逐块读取至该点,写入 文件名.nnn输出文件,然后读取- 到下一个换行符并将其写入,然后关闭输出文件,等等。显然,

  • 问题内容: 我在具有1GB RAM的Mac Mini上使用Python 2.6。我想阅读一个巨大的文本文件 因此,文件中的每一行都由两个逗号分隔的整数值组成的元组。我想阅读整个文件,并根据第二列对其进行排序。我知道,我可以进行排序而无需将整个文件读入内存。但我认为对于500MB的文件,由于我有1GB的可用空间,因此仍应该可以在内存中进行处理。 但是,当我尝试读取文件时,Python似乎分配了比磁盘

  • 问题内容: 我有一个巨大的XML文件(15 GB)。我想将XML文件中的“文本”标签转换为单个页面。 样本XML文件: 我最初使用DOM解析器,但它使JAVA OUT OF MEMORY(Valid)不足。现在,我已经使用STAX编写了JAVA代码。它运作良好,但是性能确实很慢。 这是我编写的代码: 这段代码运行良好。(忽略任何小错误)。根据我的理解,XMLStreamConstants.CHAR

  • 问题内容: 我目前正在尝试从Python 2.7中的.csv文件中读取数据,该文件最多包含100万行和200列(文件范围从100mb到1.6gb)。对于少于300,000行的文件,我可以(非常缓慢地)执行此操作,但是一旦超过该行,就会出现内存错误。我的代码如下所示: 在getstuff函数中使用else子句的原因是,所有符合条件的元素都将一起列在csv文件中,因此,经过它们以节省时间时,我离开了循

  • 问题内容: 假设我有一个包含以下内容的文本文件: 有什么方法可以编辑该文本文件中的特定行?现在我有这个: 是的,我知道那是不正确的。但是你明白我的意思吧?我正在尝试通过用法师替换战士来编辑第2行。但是我还能做到吗? 问题答案: 您想做这样的事情: 这样做的原因是您不能直接在文件中执行“更改第2行”之类的操作。您只能覆盖(而不是删除)文件的某些部分- 这意味着新内容仅覆盖旧内容。因此,如果您在第2行