Ruby-编辑csv文件的中间部分

Ruby-编辑csv文件的中间部分,ruby,file,io,Ruby,File,Io,我有一个.csv文件,我想编辑它。我需要能够动态更改行中的值,例如,将第100行中的元素40从“string1”更改为“string2” 我已经写了一个方法来做这样的事情。问题是,它会创建一个新文件,并将输入文件的内容复制到其中,在写入之前适当地更改行。我不认为这是优雅的,我希望能够直接编辑输入文件 内置CSV类是否有用于此类操作的设施?如果没有,文件或IO是否有 同样重要的是,我不必像IO.readlines()那样将整个文件存储在RAM中,因此我需要类似IO.foreach的东西。使用Rub

我有一个.csv文件,我想编辑它。我需要能够动态更改行中的值,例如,将第100行中的元素40从“string1”更改为“string2”

我已经写了一个方法来做这样的事情。问题是,它会创建一个新文件,并将输入文件的内容复制到其中,在写入之前适当地更改行。我不认为这是优雅的,我希望能够直接编辑输入文件

内置CSV类是否有用于此类操作的设施?如果没有,文件或IO是否有


同样重要的是,我不必像IO.readlines()那样将整个文件存储在RAM中,因此我需要类似IO.foreach的东西。

使用Ruby
CSV
类将文件读入数组,修改数组,然后在相同的文件名上写出。如果文件的文本为3兆字节,该怎么办?如果我需要一秒钟做几百次呢?使用一台速度快的计算机,最好是多核的,这样你就可以并行化了。老实说,如果性能是一个问题,并且您确实需要修改文件,我会用C编写它。然而,即使这样,您也可能需要编写CSV解析器。我不知道任何现有的CSV库会阻止你在中间,然后更新文件,因为在文本文件中的更新只在更新文本与原始文本长度相同的情况下才有意义。虽然在您的具体应用程序中可能会出现这种情况,但一般情况下并非如此。