2010-07-23 26 views
1

我已經打開在R +模式我現有的文件。插入行的文件

開放( 「#{RAILS_ROOT} /locale/app.pot」, 'R +')做| F |

我想在特定的線插入一些其他行不行。 像我想要插入「斐伊川」上線號線10號 「你好」 2. 「世界」上線數字20

我怎麼可以處理它紅寶石

回答

6

這爲我在過去的工作:

def write_at(fname, at_line, sdat) 
    open(fname, 'r+') do |f| 
    while (at_line-=1) > 0   # read up to the line you want to write after 
     f.readline 
    end 
    pos = f.pos      # save your position in the file 
    rest = f.read     # save the rest of the file 
    f.seek pos      # go back to the old position 
    f.write sdat     # write new data 
    f.write rest     # write rest of file 
    end 
end 
+2

我不得不做一些更正:f.write sdat,然後f.write休息。還需要確保sdat有一個新行(如果你想要的話)。 – nilanjan 2013-04-07 13:44:50

+1

已編輯的代碼使其按預期工作。它的方式是,它只將數組插入到文件中,這是不正確的('[blah,doc in rest in other line]')。尼斯貢獻@jdeseno! – JGutierrezC 2016-04-04 03:00:30

1

這可能不是最好的Ruby的方式,但一般的時候,我不得不這樣做,在過去,我會打開一個輸出文件與一個全球唯一的名稱和去逐行讀取線和寫作從一個到其他,一直保持在線計數。 (這是不是在世界上保持最偉大的事情,但它是非常簡單的實現)

+0

這是我的一個關文件操作模式我必須執行。我發現自己使用ruby而不是一些超長的excel公式。 – holaSenor 2012-11-27 18:08:45