Append columns on fiile csv using ruby

Hi guys?

How can i append another columns with header name into the CSV?

Example:
My file csv:

col1 col2

How can i add col3?

Thank you

READ IT LINE BY LINE , APPEND A COLUMN ON EACH LINE, AND REWRITE LINE

name=“Colname”
File.open(“onput.csv”) {|fin|
File.open(“output.csv”,“w”) {|fout|
while str=fin.gets
fout.puts str+";#{name}"
name=“data…”
end
}
}

hi Regis d’Aubarede

I find the file is empty once I have executed your program. I used text
files.

name=“Colname”
File.open(“one.txt”) {|fin|
File.open(“one.txt”,“w+”) {|fout|
while str=fin.gets
fout.puts str+";#{name}"
name=“data…”
end
}
}

Raja Gopalan wrote in post #1176911:

hi Regis d’Aubarede

I find the file is empty once I have executed your program. I used text
files.

This work (supposed ‘;’ is field separator in your csv):

name=“Colname”
File.open(“one.txt”) {|fin|
File.open(“two.txt”,“w”) {|fout|
while str=fin.gets
fout.puts str.chomp+";#{name}"
name=“data…”
end
}
}

The out filename must be different than the input
You can’t read and write a text file in same time.

So,another way is to read all content of file,
transform the data, en rewrite:

content=File.readlines(“one.txt”)
name=“Colname”
File.open(“one.txt”,“w”) {|fout|
content.each {|line|
fout.puts line.chomp+";#{name}"
name=“default-data…”
}
}

Regis d’Aubarede wrote in post #1176935:

or this one perhaps simpler:

content=File.readlines(“one.txt”)
name=“Colname”
content.map! {|line| x="#{line.chomp};#{name}" ; name=‘default’ ; x}
File.write(“one.txt”,content.join("\n"))

hi Regis d’Aubarede

Thank you very much, your explanation is very clear!

Thank you very much evrybody