如何使用Python从文本文件中删除最后N行?

5
我想知道删除 .txt 文件最后 N 行的最快和最有效的方法。
我一直在寻找不同的先前问题,发现再次读取和复制行是一种方法。 使用Python从文本文件中删除行 尽管如此,我一直在尝试寻找其他方法,比如在 pandas 中使用 skiprows 或 skipfooter,并能将结果保存到其他 txt 中。
同时,我看到了关于“head”和“sed”的线程,但不确定它们在 Python 中的使用方法。
请给出关于这个主题的建议?

你如何知道最后的N行是哪些,而不必读取整个文件?(如果可以,你可以只读取需要的行) - BlueSheepToken
1
在这里,你可以找到一个相当低级的答案来删除最后一行,也许它能帮助你获得更多的性能结果,而不仅仅是最后一行 :) https://dev59.com/LHI-5IYBdhLWcg3wZ3YR#10289740 - Damian
感谢BlueSheepToekn和Damian的回答! - FJSJ
1个回答

6

如果你想使用pandas跳过最后n行,那么:

import pandas as pd

df = pd.read_csv('yourfile.txt', skipfooter = N)
df.to_csv('yournewfile.txt')

如有必要,请使用sep = ...更改分隔符。

或者按照您引用的答案操作,但使用with open(..)作为良好的实践:

with open('yourfile.txt') as f1:
    lines = f1.readlines()

with open('yournewfile.txt', 'w') as f2:
    f2.writelines(lines[:-N])

1
第一个选项是我正在寻找的,因为很容易避免最后N行。然后只需要将读取内容保存到另一个文件中。谢谢! - FJSJ
这种方法在处理大文件时可能非常耗时。重新编写整个文件可能需要很长时间。 - sagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接