2016-06-15 41 views
0

我面臨着一定的問題,而試圖從目錄中打開文件的目錄中打開某些文件(目錄提供的命令行)從使用Ruby

我的代碼如下:

require 'optparse' 
OptionParser.new do |opts| 
    opts.banner = "Usage: rubyfile.rb [options]" 

    options[:c] = "" 
    opts.on('-c', '--dir DILE', "Specify Directory with input files") do |e| 
     options[:c] = e 
    end 

    options[:o] = "" 
    opts.on('-o', '--dir DILE', "Specify Output file") do |f| 
     options[:c] = f 
    end 
end.parse! 

out_file = File.open(options[:o], "a") 
dir_open = Dir.open(options[:c]) 

Dir.foreach(dir_open) do | in_file | 
    next if File.directory? in_file 
    if(in_file.include? ".txt") 
     input_file = File.open(in_file, "r") 
     File.foreach(input_file).with_index do | line, line_s | 
     puts line 
     end 
    end 
end 

如果我嘗試使用puts in_file打印出文件名,它就可以工作。但是,當我嘗試打開文件並轉儲它的內容時,它不會。

我知道我錯過了這裏的東西,但無法確定它是什麼。

+0

我能夠通過將當前路徑保存在變量中,然後使用'Dir.chdir()'將執行目錄更改爲dir_open來完成。 一旦我完成我的處理,改回當前路徑。 我想知道是否有任何其他優雅的方式來處理? –

回答

0

有了這個塊就在這裏:

input_file = File.open(in_file, "r") 
    File.foreach(input_file).with_index do | line, line_s | 
    puts line 
    end 

你可以代替寫File.readlines(in_file).each { |f| puts f }

File.readlines會返回一個數組,其中每個元素是一行文本。

+0

仍然收到相同的錯誤。無此文件或目錄。 我相信當我想要打開文件時,必須以某種方式包含路徑。無法弄清楚如何。 –

+0

正在傳遞給'File.readlines'的'in_file'的值是什麼?應該是一個字符串文件路徑。 –

+0

in_file只有文件名。 dir_open有相對路徑。 在嘗試讀取文件之前,是否必須先執行Dir.chdir()? –