アプリ版:「スタンプのみでお礼する」機能のリリースについて

Rubyの勉強をはじめました。
簡単なことが、分かりません。

open メッソドにて、ディレクトリの指定の仕方が分かりません。
-------------------------------------------
open("mytest.txt", "w") do |output|
output.print "aaaaaaaaaaaaaaaaaaaaaaaaaa"
end
-------------------------------------------
これは、current directoryにファイルmytest.txtを生成すると
在りますが、currentがわからず、ファイル検索で調べたら、
C:\Documents and Settings\Administrator\Local Settings\Temp
に出来ていました。
Start/プログラムにある、RDEを立ち上げた直後のことです。

(1)書き出す、或いは、読み出すファイルのディレクトリの指定の仕方
(2)フルパスでファイルを指定する方法
open("c:\mytest2.txt", "w") do |output|
output.print "aaaaaaaaaaaaaaaaaaaaaaaaaa"
end
これは、動きませんでした(ファイル生成されず)

宜しくお願いいたします。

A 回答 (4件)

> printの場合、何故か、改行をしていません。

これは、そういうものなのでしょうか?
> その場合、改行をさせるには、どのようにして'\n'を入れればよいのでしょうか?

はい。putsは自動的に改行を付加しますが、printはしません。
そういう仕様になっています。
細かい動作については以下のマニュアルを参照してください。

Rubyリファレンスマニュアル - 組み込み関数
http://www.ruby-lang.org/ja/man/?cmd=view;name=% …

printを使って改行を末尾に付加したい場合ですが、自分で出力すればよいです。
たとえば message という変数があり、これには改行がないとして

print message, "\n"
とか
print "#{message}\n"
とすれば末尾に改行がつきます。
ダブルクォートの中にある \ n という並びは改行コードに変換されます。
    • good
    • 0
この回答へのお礼

sakusaker7さん、ありがとうございます。
今仕事で、Perlを使っています。具体的な1つを取り上げて
Rubyで作って見ようとしています。最初の問題は、ファイルを
オープンすることでした。おかしいと自分でも思うのですが、
本には、オープンは書かれていますが、ディレクトリについては、
そこには、書かれておらず・・・・
まともにスクリプトが書けるようになるまでに、また初歩的な質問を
させてください。
ありがとうございました。

お礼日時:2007/04/15 12:59

文字列を囲むには、" と ' があります。

'・・・' は見たままの文字列になりますが、
"・・・" は \n が改行になったり、#{式} が評価されたりといろいろありますので、
そのあたりが分からないうちは、' を使ったほうが間違いないです。

open('c:\mytest2.txt','w')
    • good
    • 0
この回答へのお礼

ありがとうございます。’を使ってやってみます。

お礼日時:2007/04/13 23:21

open の引数がいけないのが原因です。


#1の方の回答のとおり、パスの区切りの '\'を重ねてもいいですが、
'/' を使ってもよいです。
Windows用のRubyであっても、パスの区切りとして'/'を使うことには
まったく問題はありません。

スクリプトが実行されている作業ディレクトリは
Dir.getwd で得ることができます。
ディレクトリは Dir.chdir で変更することができます。

puts Dir.getwd
Dir.chdir('..')
puts Dir.getwd
Dir.chdir('c:/windows')
puts Dir.getwd

この回答への補足

sakusaker7さん、ありがとうございます。
申し訳ない。もう少し教えてください。

スクリプトが実行されている作業ディレクトリは
print Dir.getwd
puts Dir.getwd
これで、得られることはわかりました。
両者の違いは、改行にあるようです。
printの場合、何故か、改行をしていません。これは、そういうものなのでしょうか?その場合、改行をさせるには、どのようにして'\n'を入れればよいのでしょうか?

宜しくお願いいたします。

補足日時:2007/04/14 00:15
    • good
    • 0

バックスラッシュがエスケープされてないだけでは? "\" を "\\" に変えるとどう?


と、全くのド素人が言ってみる。
    • good
    • 0
この回答へのお礼

ありがとうございます。
小生、今始めたばかりなので、助かります。

お礼日時:2007/04/14 00:23

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