如何使用Golang编辑大型文本文件?

时间:2013-10-29 17:22:08

标签: file-io go

我想从大型纯文本文件中编辑一行文本,并希望在内部执行此操作,例如Python的fileinput包:

fileinput.input(file, inplace=1)

我目前的方法是将整个文件读入[]字符串并将其写回,我认为这非常低效。那么在Golang中这样做的惯用方法是什么?

感谢。

1 个答案:

答案 0 :(得分:5)

请注意,Python的inin Fileinput的工作原理是将文件复制到备份文件,然后将输出重定向到原始文件。所以它与你当前的方法并没有什么不同,只是它使用临时文件而不是在内存中加载它。将其加载到内存中可能没问题,除非文件非常大。

如果文件很大,我建议将其复制到临时目录,然后使用bufio包中的函数逐行读取,修改所需内容并将结果写入新文件与原始名称相同。