- ベストアンサー
Rubyにおけるopenメソッド
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 これは、動きませんでした(ファイル生成されず) 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- notnot
- ベストアンサー率47% (4856/10272)
- sakusaker7
- ベストアンサー率62% (800/1280)
- koko_u_
- ベストアンサー率18% (459/2509)
関連するQ&A
- Rubyのスクリプト
つぎのようなスクリプトを組みました。これはこれで、動いておりますが、お願いです。 (1)Rubyらしい書き方にするには、どこを改めればよいですか? (2)ref_file=open("myReference.txt") の部分は、 外部のレファレンスを用いて名前を翻訳しているところです。 この部分を、関数呼び出しでやってしまいたい。どのように組みなおせば良いですか? 宜しくお願いいたします。 --------------------- おおまかな説明:ディレクトリ「myData」の中にあるlogファイルをひとつずつオープン。 まず、「Target」という単語を探し、その直後にある単語を掴んで、外部のレファレンスファイル「myReference.txt」からrealNameを持ってくる。 その後、処理-----を実行する。 myPath='C:\myData\' print Dir.getwd,"\n" Dir.chdir(myPath) Dir.foreach(myPath) { |myFileName| if /.log/i =~myFileName file_source_body=open(myFileName, "r") while text=file_source_body.gets do if(/Target (\w+\/)/=~text) then myTargetName=$1 ref_file=open("myReference.txt") # (2)のアイテムの部分 while ref_info=ref_file.gets do (/#{myTargetName}\s(\S+)/i=~ref_info) && (realName=$1) end ref_file.close end end ------- ------- ------- }
- ベストアンサー
- その他(プログラミング・開発)
- ruby テキストファイル書き出しでの文字化け
ruby&mac&文字の扱い 初心者です。 mac os 10.6.8 HTMLの情報を読み込みテキストファイルに書き出したいのですが、 ターミナル上、putsではきちんと日本語で表示されるのですが、書き出したあとの txtファイルを開くと文字化けしています。 File.open("test.txt","w") do |file| @s_info.each do |data| puts data[:m_sec] file.puts data[:m_sec] end end よろしくお願いします。
- ベストアンサー
- Ruby
- Openメソッドについて
ブックAのSheet1にあるセルのデータをブックBのSheet1のセルにコピーするために、以下のようにOpenメソッドを使ったVBAを記述してみたのですが、エラーコード1004「指定されたファイルが存在しません」のようなエラーメッセージが出てきました。Openメソッドが使われている例を見ているとどうやらブックのあるフォルダを指定しているような感じがするのですが、Openメソッドは具体的に該当のブックのある場所を指定しなくてはならないのでしょうか??(私がVBAを記述するにあたり参考にしたインターネットのVBAを紹介するページでは、ブックのある場所を指定せず、私が記述したように直にブック名を入力していました。) お忙しい中申し訳ないのですが、どなたかご教授いただけると、とても嬉しいです!よろしくお願いいたします。 Sub ブックAのデータをブックBに() With Workbooks.Open("ブックA.xlsx") .Sheets("Sheet1").Range("E8").Value = _ ThisWorkbook.Range("C2").Value End With End Sub
- ベストアンサー
- Visual Basic
- fopenでファイルがオープンできません
$fp = fopen(TEST_FILE, "w") としてオープンしようとすると Warning: fopen(mybasic9.txt): failed to open stream: No such file or directory と、オープンしようとしたファイルがない、と出ます そして、そのファイルをあらかじめ作っておくと OKです。 しかし fopen(TEST_FILE, "w") は該当ファイルがあればそれをオープンし 無ければ、新しく作成する、とFopenの仕様に出ています。 これは、今使っているサーバーの問題でしょうか 何か、避ける方法はないでしょうか よろしくお願いします
- 締切済み
- PHP
- FORTRAN:出力ファイルをフォルダごとに整理するには
出力ファイルの数が多いので、出力と同時にフォルダごとに整理したいのですがうまくいきません。 具体的に言うと、例えば CHARACTER DEF(2)*1 DATA DEF/'1.txt','2.txt'/ DO 10 NB=1,2 OPEN(10,FILE='A-A\output-'//DEF(NB)) 10 CONTINUE END というプログラムで出力すると、 A-Aというフォルダ内にoutput-1.txt、output-2.txtが作成されます。 これを発展させて、二つ以上のフォルダ内に出力する方法をいろいろ試したのですが、うまくいきません。 わかる方がいらっしゃれば、どうかご回答お願いいたします。 以下は、試したがうまくいかなかったプログラムです。 CHARACTER ABC(2)*5 CHARACTER DEF(2)*1 DATA ABC/'A','B'/ DATA DEF/'1.TXT','2.TXT'/ DO 20 NA=1,2 DO 10 NB=1,2 OPEN(10,FILE='A-'//ABC(NA)\output-'//DEF(NB)) 10 CONTINUE 20 CONTINUE END
- ベストアンサー
- その他([技術者向] コンピューター)
- FORTRAN:出力ファイルをフォルダごとに整理するには
出力ファイルの数が多いので、出力と同時にフォルダごとに整理したいのですがうまくいきません。 具体的に言うと、例えば CHARACTER DEF(2)*1 DATA DEF/'1.TXT','2.TXT'/ DO 10 NB=1,2 OPEN(10,FILE='A-A\output-'//DEF(NB)) 10 CONTINUE END というプログラムで出力すると、 A-Aというフォルダ内にoutput-1.txt、output-2.txtが作成されます。 これを発展させて、二つ以上のフォルダ内に出力する方法をいろいろ試したのですが、うまくいきません。 わかる方がいらっしゃれば、どうかご回答お願いいたします。 以下は、試したがうまくいかなかったプログラムです。 CHARACTER ABC(2)*5 CHARACTER DEF(2)*1 DATA ABC/'A','B'/ DATA DEF/'1.TXT','2.TXT'/ DO 20 NA=1,2 DO 10 NB=1,2 OPEN(10,FILE='A-'//ABC(NA)\output-'//DEF(NB)) 10 CONTINUE 20 CONTINUE END
- 締切済み
- その他([技術者向] コンピューター)
- Ruby ファイル出力について
あるファイルを一行づつ処理したものを、別のbuta.txtというファイルに書き出したいのですが、どうも上手くできません・・・。 誰か助けてください。お願いします。 ■かけるデータの内容■ banana banana ■プログラム■ file_name = ARGV.shift i = open(file_name) z = open("buta.txt", "w") while line = i.gets line.gsub(/a/, "A") line.sub(/a/, "A") ※ここに何かいれる?? end ■buta.txtの内容■ bAnAnA bAnana になったらいいのですが。
- ベストアンサー
- その他(プログラミング・開発)
- rubyの勉強をしていてプログラムを作っているのですがうまくいきません。
rubyのプログラムを作っています。 指定したディレクトリの中の指定したファイルを検索します。 そしてファイルの有無を条件にして処理をしていくプログラムをつくっています。 イメージでは下記のような感じ if test.txtを検索(検索先のディレクトリは/../../tmp) #ファイル存在する なにもしない else #ファイルが存在しない test.txtを作成 処理1 test.txtを削除 end 日本語ばっかりで申し訳ないのですがこんな感じです。 今はifを使ったのですがそれ以外の方法でもかまいません。 できればサンプルのプログラムを載せていただけるとありがたいです。 ご教授をよろしくお願いします。 利用環境 Windows XP Home Edition cygwinをインストールしてrubyを実行しています
- ベストアンサー
- その他(プログラミング・開発)
- Ruby1.8.7 ファイルアップロードCGI
CGI を使ったファイルのアップローダを作りたくて、今日初めて Ruby を触っていますが、質問があります。 アップロードするファイル本体以外の情報を name="version" で受け取って、保存するディレクトリを分けるようにしています。書きかけのコードは以下の通りです。(タブによるインデントが入らなかったので、アンダースコアで表現しています) ----------ここからソースコード---------- #!/usr/local/bin/ruby require "cgi" begin __print "Content-Type: text/plain\n\n" __cgi = CGI.new __print "Ruby version is " __print RUBY_VERSION,"\n" __print "filename = " __print cgi['upload_file'].original_filename, "\n" __file = cgi.params['version'][0] __if file.class == StringIO then ____print "File is StringIO Class.\n" ____print "version = " ____print cgi["version"].string, "\n" ____if File.exist? cgi["version"].string then ______print "このバージョンのディレクトリは既に存在しているため、ディレクトリは作成されませんでした。" ____else ______print "ディレクトリが存在しないので作成します。" ______Dir::mkdir(cgi["version"].string, 0755) ____end ____OUTPUT_DIR = (cgi["version"].string + "/") ____open(OUTPUT_DIR + cgi['upload_file'].original_filename, "w") {|fh| ____fh.binmode ____fh.write cgi['upload_file'].read ____} __else ____print "File is TempFile Class.\n" ____#ここから先が書きかけで分からない部分です。 __end rescue => e __print "Error!" + e end ----------ここまでソースコード---------- Ruby の CGI モジュールを使っていますが、受け取ったファイルが 10240 バイト未満だと StringIOオブジェクト、10240 バイト以上だと TempFile オブジェクトになるという規則があるそうで、オブジェクトの種類によって分岐させています。 StringIO オブジェクト(10240バイト未満の送信)の場合はこれで想定通りに動いたのですが、TempFile オブジェクトと判別された場合に、 version のテキストフィールドの文字列を print により表示(出力)したりディレクトリ名にしたりする方法が分かりません。また、ファイル本体 upload_file は TempFile オブジェクトの場合でも同じ記述でファイルに保存できますでしょうか? サーバにインストールされている Ruby のバージョンは 1.8.7 です。
- 締切済み
- Ruby
- rubyに関する質問です。
rubyに関する質問です。 require 'open-uri' open("uri") do |f| 5.times do print f.gets end end これを実行すると <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>繧ェ繝悶ず繧ァ繧ッ繝域欠蜷代せ繧ッ繝ェ繝励ヨ險?隱・Ruby</title> Complete(0) このように日本語のところだけ文字化けしてしまうのですが、どのようにすれば文字化けがなおるのでしょうか?
- ベストアンサー
- Ruby
お礼
sakusaker7さん、ありがとうございます。 今仕事で、Perlを使っています。具体的な1つを取り上げて Rubyで作って見ようとしています。最初の問題は、ファイルを オープンすることでした。おかしいと自分でも思うのですが、 本には、オープンは書かれていますが、ディレクトリについては、 そこには、書かれておらず・・・・ まともにスクリプトが書けるようになるまでに、また初歩的な質問を させてください。 ありがとうございました。