0

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

fileinput.input(file, inplace=1)

我目前的方法是将整个文件读入 []string 并将它们写回,我认为这非常低效。那么在 Go 中执行此操作的惯用方式是什么?

4

1 回答 1

6

请注意,Python 的就地 Fileinput 通过将文件复制到备份文件然后将输出重定向到原始文件来工作。因此,它与您当前的方法并没有什么不同,只是它使用临时文件而不是将其加载到内存中。除非文件非常大,否则将其加载到内存中是可以的。

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

于 2013-10-29T18:03:36.530 回答