我正在Linux系统上处理一个非常大的(~11GB)文本文件。我正在一个程序中运行它,该程序正在检查文件是否有错误。一旦发现错误,我需要要么修复行,要么完全删除行。然后重复。。。
最终,一旦我对这个过程感到满意,我会完全自动化它。但是现在,假设我是手工操作的。
从这个大文件中删除特定行的最快方式(以执行时间计)是什么?我想用Python来做……但也可以用其他的例子。行可能在文件中的任何位置。
如果是Python,则假定以下接口:
def removeLine(filename, lineno):
谢谢
-aj公司
Tags:
据我所知,你不能用python打开一个txt文件并删除一行。你必须做一个新文件,把除了那一行以外的所有东西都移到上面。如果你知道具体的行,那么你可以这样做:
当然,您可以检查行的内容,以确定是否要保留它。我还建议,如果您有一个完整的行列表需要删除/更改,以便在一次传递文件中完成所有这些更改。
在适当的位置修改文件,违规行将替换为空格,这样文件的其余部分就不需要在磁盘上乱放。如果修复程序不长于要替换的行,也可以将该行“修复”
如果可以更改另一个程序以输出文件偏移量而不是行号,则可以直接将偏移量分配给p,而不必使用for循环
同一文件可以同时有两个文件对象(一个用于读取,一个用于写入):
相关问题 更多 >
编程相关推荐