2013-10-29 42 views
1

我想从一个大的纯文本文件编辑文本的一行,并要做到这一点就地,像Python的的FileInput包:如何用Go lang编辑大文本文件?

fileinput.input(file, inplace=1) 

我目前的做法是读取整个文件到[]字符串并写回来,我认为这是非常低效的。那么在Golang中做到这一点的惯用方式呢?

谢谢。

回答

4

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

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