我完全清楚有很多方法可以解决这个问题。
我需要的是一个简单的Python脚本,它只能替换大文本文件中的1行。
它始终是第四行。
由于文件(实际上是文件)大于20GB,我不想将其加载到内存或创建副本,只需有效地替换一行。
我很乐意在这方面提供任何帮助。
一个。
PS。我知道vi可以做到这一点,但我需要它作为一个脚本,所以非vi兼容的人也可以这样做。
答案 0 :(得分:2)
您可以打开文件进行更新,或使用mmap
作为建议的其他答案。有关如何在文件中间进行编辑的示例:
def example(fname):
f = open(fname, 'r+b')
f.seek(100)
f.write('foobar')
f.close()
这将在文件中位置100的“foobar”中进行编辑。但是,在您编辑的行变得更长和更短的一般情况下,您仍然必须经历整个文件一直到最后(您只能在末尾扩展和截断文件,而不是在头部) 。 Vi在这方面并不神奇,同样的规则适用于它。
为了简单起见,我将遍历整个文件并输出一个新的编辑文件。你绝对不想一次把它全部读入内存。在您需要编辑的行之前逐行进行,然后逐块进行。
您还可以使用ed
或sed
命令,因为脚本比vi
更简单。
答案 1 :(得分:0)
尝试使用内存映射文件。 https://docs.python.org/2/library/mmap.html