重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Rubyでテキスト内容を別のテキストに一度に出力したいのですが、どのようにすればよいのでしょうか。
rubyはさっきはじめたところです。
一通り検索しましたが、やり方がヒットしませんでした。

a.txtの内容:
aaaaa
bbbbb
ccccc
...

を、ファイルコピーではなくoutput.txtに出力したいのですが、

a = open("a.txt")
o = open("output.txt",w)

???

a.close
o.close

で、???の部分にどのような処理を書けばよいのでしょうか。
putsやwriteで書いてみたのですが、(o.write a)
#<File:0x28a4450>
と出力され、(ファイルオブジェクトのアドレス?)、a.txtの内容が出力出来ませんでした。
a.xxx
のようにするのかな、と予想しますが、方法は問いませんので、ご教示いただけないでしょうか。

A 回答 (2件)

#Rubyあんま使ってないけど出来た。

Rubyがメインの人から見たら可笑しいかも。(コピーでないことを示すため、先頭四行のみ出力した。)
#====
# a.txt
#====
#1
#2
#3
#4
#5
#6
#7
#==
#output.txt
#==
#1
#2
#3
#4
a = File::new("a.txt","r")
o = File::new("output.txt","w")
x = a.readlines
(0..3).to_a.each {|i| o.write(x[i])}
o.close
a.close

この回答への補足

ありがとうございます。今から実行してみます。

補足日時:2010/05/25 14:26
    • good
    • 0
この回答へのお礼

動きました。行数指定できるのは便利ですね。こういう書き方できるのは知りませんでした。
ありがとうございました。

お礼日時:2010/05/26 11:19

自動でcloseしてくれるのでブロックを使ったほうがいいと思います。



open("a.txt") do |r|
open("output.txt", "w") do |w|
w.write(r.read)
end
end

この回答への補足

ありがとうございます。今から離脱するので、後ほど確認させてくださいませ。

補足日時:2010/05/25 16:50
    • good
    • 0
この回答へのお礼

どの言語でも2重ループは必要なようですね。
ポイントは回答順とさせていただきます。ありがとうございました。

お礼日時:2010/05/26 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!