Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
newbie qusetion: read a file and print out same file
joemacbusiness
12/24/2008 5:06:00 PM
Hi All,
How do I read an input file and print it back to STDOUT
exactly as the original file. This should be very simple
but the output of my program is all garbled.
What am I doing wrong?
( I am using
http://www.rubycentra...
to learn Ruby)
The program, input, and runtime output are below.
Thanks, --JM
================= snip ==============
$ cat ./test56.rb
#!/usr/local/bin/ruby
inputFile = File.readlines("input4", 'r')
for item in inputFile
item.chop()
print item, "\n"
end
$
$ cat input4
car
tree
house
candy bar
paper
ocean
$ ./test56.rb
car
tr
ee
house
candy bar
paper
ocean
3 Answers
David A. Black
12/24/2008 5:27:00 PM
0
Hi --
On Thu, 25 Dec 2008, joemacbusiness@gmail.com wrote:
> Hi All,
>
> How do I read an input file and print it back to STDOUT
> exactly as the original file. This should be very simple
> but the output of my program is all garbled.
> What am I doing wrong?
> ( I am using
http://www.rubycentra...
to learn Ruby)
>
> The program, input, and runtime output are below.
>
> Thanks, --JM
> ================= snip ==============
>
> $ cat ./test56.rb
> #!/usr/local/bin/ruby
>
> inputFile = File.readlines("input4", 'r')
>
> for item in inputFile
> item.chop()
> print item, "\n"
> end
You're working too hard :-)
input_file = File.readlines("input4")
puts input_file
or just
puts File.read("input4")
If you do have occasion to loop through an array of lines (which no
doubt you will at some point), remember that chop doesn't do a
permanent chop. What you probably want is chomp!, which removes a
trailing newline if there is one.
David
--
David A. Black / Ruby Power and Light, LLC
Ruby/Rails consulting & training:
http://www.r...
Coming in 2009: The Well-Grounded Rubyist (
http://manning....
)
joemacbusiness
12/24/2008 8:03:00 PM
0
On Dec 24, 9:26 am, "David A. Black" <dbl...@rubypal.com> wrote:
> Hi --
>
>
>
> On Thu, 25 Dec 2008, joemacbusin...@gmail.com wrote:
> > Hi All,
>
> > How do I read an input file and print it back to STDOUT
> > exactly as the original file. This should be very simple
> > but the output of my program is all garbled.
> > What am I doing wrong?
> > ( I am using
http://www.rubycentral....
learn Ruby)
>
> > The program, input, and runtime output are below.
>
> > Thanks, --JM
> > ================= snip ==============
>
> > $ cat ./test56.rb
> > #!/usr/local/bin/ruby
>
> > inputFile = File.readlines("input4", 'r')
>
> > for item in inputFile
> > item.chop()
> > print item, "\n"
> > end
>
> You're working too hard :-)
>
> input_file = File.readlines("input4")
> puts input_file
>
> or just
>
> puts File.read("input4")
>
> If you do have occasion to loop through an array of lines (which no
> doubt you will at some point), remember that chop doesn't do a
> permanent chop. What you probably want is chomp!, which removes a
> trailing newline if there is one.
>
> David
>
> --
> David A. Black / Ruby Power and Light, LLC
> Ruby/Rails consulting & training:
http://www.r...
> Coming in 2009: The Well-Grounded Rubyist (
http://manning....
)
Hello David,
I wanted to loop through the input file "line-by-line"
and print it out the same way. Sorry I did not make that
clear.
Here is the code block that does what I wanted.
inputFile = File.open("input4", 'r')
while line = inputFile.gets()
puts line
end
Thank you, --JM
Brian Candler
12/25/2008 10:44:00 AM
0
unknown wrote:
> $ cat input4
> car
> tree
> house
> candy bar
> paper
> ocean
> $ ./test56.rb
> car
>
> tr
> ee
> house
> candy bar
>
> paper
>
> ocean
Interesting output, especially the split 'tree'. To see what's going on,
I added an extra line to your code:
inputFile = File.readlines("input4", 'r')
p inputFile
This gives the following output:
["car", "\ntr", "ee\nhouse\ncandy bar", "\npaper", "\nocean\n"]
To understand what's happening here, read the documentation under "ri
IO::readlines"
---------------------------------------------------------- IO::readlines
IO.readlines(name, sep_string=$/) => array
------------------------------------------------------------------------
Reads the entire file specified by _name_ as individual lines, and
returns those lines in an array. Lines are separated by
_sep_string_.
a = IO.readlines("testfile")
a[0] #=> "This is line one\n"
So, the problem is that the 'r' is not the file input mode, but the
separator character! The fact you had the words "car", "bar" and "paper"
(all ending in 'r') made this rather unclear. It looks like it's mostly
splitting at the end of a line, but actually it's splitting after a
letter 'r'.
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
newbie qusetion: read a file and print out same file
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password