Most Efficient Way to Write to Fixed Width File (Ruby)
Posted
by Ruby Novice
on Stack Overflow
See other posts from Stack Overflow
or by Ruby Novice
Published on 2010-05-12T13:36:01Z
Indexed on
2010/05/12
14:44 UTC
Read the original article
Hit count: 198
I'm currently working with extremely large fixed width files, sometimes well over a million lines. I have written a method that can write over the files based on a set of parameters, but I think there has to be a more efficient way to accomplish this. The current code I'm using is:
def self.writefiles(file_name, positions, update_value)
@file_name = file_name
@positions = positions.to_i
@update_value = update_value
line_number = 0
@file_contents = File.open(@file_name, 'r').readlines
while line_number < @file_contents.length
@read_file_contents = @file_contents[line_number]
@read_file_contents[@positions] = @update_value
@file_contents[line_number] = @read_file_contents
line_number += 1
end
write_over_file = File.new(@file_name, 'w')
line_number = 0
while line_number < @file_contents.length
write_over_file.write @file_contents[line_number]
line_number += 1
end
write_over_file.close
end
For example, if position 25 in the file indicated that it is an original file the value would be set to "O" and if I wanted to replace that value I would use ClassName.writefiles(filename, 140, "X") to change this position on each line. Any help on making this method more efficient would be greatly appreciated!
Thanks
© Stack Overflow or respective owner