[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Updating header in file

jabowen

8/3/2007 12:55:00 AM

Let me try this in another way. I have a file
(test.txt) where each line contains comma separated
values and I am using CSV to work though that stored
file. The first line of the file is a header used by
the CSV program and as hash keys in the program that
creates the file.

What I am looking to do is update test.txt in two way.
First I add a line at the end of the file with
today's values for each entry in the first line
(header). Like 1, 20, 300, etc. Which I can do with

file = File.open("test.tet")
file.puts(x) #x being string with the comma separated
values.

Second I will sometimes find a need to add another
header/hash key to the end of the first line. That is
replace the first line (header) with a new one.

The only way that I can think of is to create a new
file, enter a new first line and then move line 2
thought the last line from file 1 into file 2 and then
rename file 2 to file 1.

I was hoping there was a way to replace the first line
in a text file.

Thanks Jeff



____________________________________________________________________________________
Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
http://get.games.yahoo.com/proddesc?gamekey=monop...

4 Answers

James Gray

8/3/2007 2:10:00 AM

0

On Aug 2, 2007, at 7:55 PM, Jeffrey Bowen wrote:

> The only way that I can think of is to create a new
> file, enter a new first line and then move line 2
> thought the last line from file 1 into file 2 and then
> rename file 2 to file 1.

This is the right strategy. You've just described a solid file
changing idiom we all use regularly. Code it up and pat yourself on
the back for a job well done.

James Edward Gray II

Michael Linfield

8/3/2007 2:19:00 AM

0

look into using the .slice(# , #) method. so long as you know the
length of the first line u can probably just slice it out

--
Posted via http://www.ruby-....

Robert Klemme

8/3/2007 12:59:00 PM

0

2007/8/3, Jon Hawkins <globyy3000@hotmail.com>:
> look into using the .slice(# , #) method. so long as you know the
> length of the first line u can probably just slice it out

This is a dangerous approach as it will work for the minority of cases
only (i.e. when old and new line have the exact same length). Though
you could make it work for cases where the new line is shorter than
the old line things get messy if you try to cope with the opposite
case.

Ah, and Jeffrey, do yourself a favor and use the block form of
File.open (btw, your sample does not work anyway since
File.open(file_name) will open for reading only).

File.open(foo, "a") {|fi| fi.puts x}

Kind regards

robert

Chris Carter

8/3/2007 3:17:00 PM

0

On 8/2/07, Jeffrey Bowen <ja_bowen@yahoo.com> wrote:
> Let me try this in another way. I have a file
> (test.txt) where each line contains comma separated
> values and I am using CSV to work though that stored
> file. The first line of the file is a header used by
> the CSV program and as hash keys in the program that
> creates the file.
>
> What I am looking to do is update test.txt in two way.
> First I add a line at the end of the file with
> today's values for each entry in the first line
> (header). Like 1, 20, 300, etc. Which I can do with
>
> file = File.open("test.tet")
> file.puts(x) #x being string with the comma separated
> values.
>
> Second I will sometimes find a need to add another
> header/hash key to the end of the first line. That is
> replace the first line (header) with a new one.
>
> The only way that I can think of is to create a new
> file, enter a new first line and then move line 2
> thought the last line from file 1 into file 2 and then
> rename file 2 to file 1.
>
> I was hoping there was a way to replace the first line
> in a text file.
>
> Thanks Jeff
>
>
>

http://rubyre.... Ruport will let you parse in the file, do
all sorts of data manipulation (including everything you described)
and write it back out as csv.

--
Chris Carter
concentrationstudios.com
brynmawrcs.com