• 締切済み

{Ruby}Dir.globの結果を引数として代入

こんにちは。 当方Ruby初心者です。 最近Dir.globのメソッドを使用しているのですが、 Dir.globで取得した結果を1つずつ引数として取り出すにはどのようなメソッドを 組めば良いのでしょうか? ご教授の程よろしくお願い致します。

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

http://okwave.jp/qa/q8813697.html でも書きましたけど、マニュアル読みましょうよ。 熟練者だって、細かい点を確認するためにマニュアルを読みます。 それを初心者がサボってどうするんですか。 http://docs.ruby-lang.org/ja/2.1.0/class/Dir.html#S_--5B--5D にちゃんと > パターンにマッチするファイル名を文字列の配列として返します。 と書いてあります。 「配列の中身を順番に処理する」って基本中の基本なわけですから、初心者用の入門書を読めばちゃんと書いてあります。 また > ブロックが与えられたときはワイルドカードにマッチしたファイルを 引数にそのブロックを 1 つずつ評価して nil を返します とも書いてあります。 Dir.glob("b*") {|f| p f } というサンプルコードもちゃんと載っています。 ブロックを与える方法というのも、Rubyの基本ですから、ちゃんと初心者用の入門書にも書いてあります。 前の質問の中で、あなた自身が利用しています。 f.each_line do |line| ~ end というように。

alpacasan15
質問者

お礼

ご親切に指摘してくださりありがとうございます。 返す言葉もありませんので、マニュアルからしっかり勉強しようと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

>例えばFile.open(sample)などのメソッドの引数にDir.globの結果を渡したい場合はどうすればよいのでしょうか? #1の回答の例であれば、以下のようになります。 カレントディレクトリ下のファイル一覧を取得して、そのファイルをオープンする files = Dir.glob("*") files.each do |file| File.open(file)  ・・・・・以下、省略 end Dir.globの結果として、filesが取得できます。 これは、カレントディレクトリ下のファイル名(あるいはディレクトリ名)の配列になっています。 この配列の内容を1個づつ処理する場合は、each メソッドを使います。 files.each do |file| # file が1個のファイル名(あるいはディレクトリ名)をあらわしています。 end 尚、files と file の名前はなんでもよいです。 xxx = Dir.glob("*") xxx.each do |x| File.open(x) end でも同じ結果になります。 余談ですが、上記の例の場合、ディレクトリ名も取得する場合もありえます。 もし、あなたの環境でDir.globを実行したときに、全てファイル名だけであれば、問題ありませんが、 ディレクトリも含まれる場合は、そのディレクトリをスキップする必要があります。 その場合は、再度質問してください。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

サンプルです。 カレントディレクトリ下のファイル一覧を取得して、表示します。 files = Dir.glob("*") files.each do |file| print file,"\n" end 不明点があれば、補足してください。

alpacasan15
質問者

補足

回答ありがとうございます。 もう一つお聞きしたい事があるのですが、 回答者様のサンプルではprintの引数にDir.globの結果を当てはめていらっしゃいますが、 例えばFile.open(sample)などのメソッドの引数にDir.globの結果を渡したい場合はどうすればよいのでしょうか? たびたびの質問すみません。ご回答の程よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rubyでメソッド内で引数名、値を取得

    Rubyでメソッドの引数名をメソッド内部で取得するような事は可能でしょうか? def hoge(a,b,c) # ここでa,b,cの引数名、またその値を取得 # 例えば、{:a=>1, :b=>2, :c=>3}のようにHashの形式で得るなど。 end local_variablesだと、引数も含まれますがその他で定義したものも拾ってしまうため、他の方法を探しています。 わかる方がいれば教えていただけますでしょうか。

  • Rubyでnet::httpを用いてPOSTする

    今晩わ。 RubyでNet::HTTPをもちいてPOST送信する際の処理について 質問です。 Net::HTTPクラスのインスタンスメソッドのpostメソッドを用いて送信する場合 送信内容を # version 1.2 (Ruby 1.8.x or later) response = http.post('/cgi-bin/search.rb', 'query=subject&target=ruby') 上記のように、引数に渡していると思います。 このとき、値の中にパラメータのデリミタと同じ&を入れたい場合どうしたらいいのでしょうか? 例えば query=subject&target=ruby&PHP のような感じでvalueとして&を渡す場合です。 Net**HTTP::Postクラスのrequestメソッドを用いてハッシュとして渡した時は問題なかったのですが、上記のpostメソッドの時がPOSTされた値を取得するときにキチンと取得できませんでした。これはなにか対処方法があるのでしょうか? ご教授ください。 おねがいします。

    • ベストアンサー
    • Ruby
  • Ruby1.9で上書き禁止でのファイルコピーする方法について。

    Ruby1.9で上書き禁止でのファイルコピーする方法について。 次のようなロジックを組んでいますが、同一ファイルがある場合でも上書きをしてしまいます。 同一ファイルは上書きさせないようにするにはどうすれも良いでしょうか? file1 = "C:/*.*" file2 = "C:/デバッグ用2/" FileUtils.cp(Dir.glob(file1),file2) どうか宜しくお願い致します。

    • ベストアンサー
    • Ruby
  • コマンド「dir」の結果を、テキストに出力

    batファイルを使用して、「dir」コマンドの結果を、既存のテキストファイル「dir.log」に出力したいのですが、実装方法を教えていただけないでしょうか? 詳細: ・dirバッチ:C:\work\dir.bat ・ログファイル:C:\work\dir.log ・dirで出力したいフォルダ:D:\work\配下 以下のリダイレクト?を使用して上書きしたいです。 dir >> dir.log どうか、ご教授お願いいたします。

  • Ruby Seleniumで文章の保存

    こんばんは。 当方Ruby初心者です。 現在、Selenium Webdriverでスクレイピングをしており、 その中でputs driver.page_sourceコマンドを使用しています。 その際、putsコマンドで出力されたソースをPC内にファイルとして保存する事は可能 でしょうか?また、可能な場合、どのようにして実行すれば良いのでしょうか。 拙い質問ですが、どうかご教授の程、よろしくお願いします。

  • bashのtimeout コマンド引数の指定

    初心者です。我慢して聞いてほしいです。 timeoutコマンドを使用して、rubyのプログラムに時間制限をかけようと思っています。 対象のrubyスクリプトは事情により、スクリプトのあるディレクトリから呼び出したいのですが、 コマンドの書き方がわかりません。 timeout 100 cd ~/parent_dir/; ruby test_script.rb timeout 100 cd ~/parent_dir/ && ruby test_script.rb timeout 100 `cd ~/parent_dir/ && ruby test_script.rb` どれもうまくいきませんでした。 どうやって書けばよいのでしょうか?

  • 引数についてお願いします。

    初めまして、PC初心者です。 プログラム関係で使う引数の使い方・ホームページなどを教えてください。 どうか、ご教授お願い致します。

  • Ruby 改行文字の挿入

    こんにちは。 Rubyの質問です。 htmlの文章にrubyで改行文字を挿入してそれを認識させたいのですが、 htmlの文章内に¥nを挿入しても読み込んだ際にうまく認識してくれませんでした。 何か他に方法があるのでしょうか。 ご教授の程よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • system関数の引数

    初心者です。 test.phpに$body、$iを引数として渡したいのですが これはtest.phpではどのように取得すればいいのでしょうか?どなたかご教授お願い致します。 system("***/ test.php $body $i > /dev/null &");

    • ベストアンサー
    • PHP
  • rubyの文法について質問です。

    rubyの文法について質問です。 aaa = `diff -q bbb ccc` のような形でdiffコマンドの実行結果をaaaに格納したいのですが bbb及びcccを任意に入力したく、一度getsメソッドでbbb,cccそれぞれに文字列を代入したのですが、それをバッククォーテーション内で使用できず困っています。 なにか解決策がありましたらご教授いただけるとありがたいです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
このQ&Aのポイント
  • ギターアンプRoland BC-60/310の内部にあるヒートシンクの裏に付いているパワートランジスタ2個を交換する予定ですが、側に1個小さいトランジスタ(GD C3421)が付いています。これは何なのでしょうか?
  • パワートランジスタについては導通ありで交換が必要とのことですが、このC3421が気になります。導通を確認したところ、極性どの方向からでも導通ありとなっています。正常なのか、どなたかご教授頂けると幸いです。
  • 電子楽器メーカーローランド製品、ボス製品についての質問です。
回答を見る

専門家に質問してみよう