Write a file

Hi all,

I use the following script to write a 2D array. I wonder if there is
improvement for them.

Thanks,

Li

############script##########
data_all=[
(1…10).to_a,
(1…10).to_a,
(1…10).to_a,
(1…10).to_a
]# a 2D array

File.open(‘test3.txt’,‘w’) do |a_f|
data_all.each do |row |
row.each {|e| a_f.print e ; a_f.print “\t”}
a_f.puts
end

end

Li Chen wrote:

Hi all,

I use the following script to write a 2D array. I wonder if there is
improvement for them.

Thanks,

Li

############script##########
data_all=[
(1…10).to_a,
(1…10).to_a,
(1…10).to_a,
(1…10).to_a
]# a 2D array

File.open(‘test3.txt’,‘w’) do |a_f|
data_all.each do |row |
row.each {|e| a_f.print e ; a_f.print “\t”}
a_f.puts
end

end

What you have is good enough.
There are a few things which could be better, for example formatting
(sprintf), and error reporting, also what I would do is to encapsulate
this code into a function so that you can re use it later on.

def array2D_to_file(array2D,file_name)


end

my 2 cents

Rodrigo B. wrote:

What you have is good enough.
There are a few things which could be better, for example formatting
(sprintf), and error reporting, also what I would do is to encapsulate
this code into a function so that you can re use it later on.

def array2D_to_file(array2D,file_name)


end

my 2 cents

Unfortunately Excel doesn’t see the formatted outputs correctly, so I
don’t perform the formatting.

Li

On Fri, Oct 9, 2009 at 4:07 AM, Li Chen [email protected] wrote:

I use the following script to write a 2D array. I wonder if there is
improvement for them.

you may want to look at fastercsv.

kind regards -botp

On Oct 8, 4:07 pm, Li Chen [email protected] wrote:

          a_f.puts
   end

end

I would do something more along the lines of this:

File.open(‘test.txt’, ‘w’) do |file|
data_all.each do |row|
file.puts row.join("\t")
end
end

On Oct 8, 10:09 pm, botp [email protected] wrote:

you may want to look at fastercsv.

kind regards -botp

This is tab-separated, but if Excel is the ultimate goal, I guess that
CSV would work. Fortunately, I don’t use Excel, so I don’t know much
along those lines.

#I try to shorten it

File.open(‘test3.txt’,‘w’) do |a_f|
a_f.print data_all.map{|row| row.join("\t")}.join("\n")
end

#but for Excel, csv file is better

File.open(‘test3.csv’,‘w’) do |a_f|
a_f.print data_all.map{|row| row.join(",")}.join("\n")
end

Thairuby TH wrote:

#I try to shorten it

File.open(‘test3.txt’,‘w’) do |a_f|
a_f.print data_all.map{|row| row.join("\t")}.join("\n")
end

#but for Excel, csv file is better

File.open(‘test3.csv’,‘w’) do |a_f|
a_f.print data_all.map{|row| row.join(",")}.join("\n")
end

Thank you very much for the code. But I still like to do the format
after file
is read by Excel.

Li

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs