我想从大型纯文本文件中编辑一行文本,并希望在内部执行此操作,例如Python的fileinput包:
fileinput.input(file, inplace=1)
我目前的方法是将整个文件读入[]字符串并将其写回,我认为这非常低效。那么在Golang中这样做的惯用方法是什么?
感谢。
答案 0 :(得分:5)
请注意,Python的inin Fileinput的工作原理是将文件复制到备份文件,然后将输出重定向到原始文件。所以它与你当前的方法并没有什么不同,只是它使用临时文件而不是在内存中加载它。将其加载到内存中可能没问题,除非文件非常大。
如果文件很大,我建议将其复制到临时目录,然后使用bufio
包中的函数逐行读取,修改所需内容并将结果写入新文件与原始名称相同。