2017-07-11 4 views
0

ruby​​プログラムを使って、1つのCSVファイルの内容を新しいCSVファイルにコピーしました。ruby​​で冗長ファイルを開く操作を取り除く方法

これは私のコードです -

require 'csv' 
class CopyFile 
    def self.create_duplicate_file(file_name) 

    CSV.open(file_name, "wb") do |output_row| 
     output_row << CSV.open('input.csv', 'r') { |csv| csv.first } 
     CSV.foreach('input.csv', headers: true) do |row| 
     output_row << row 
     end 
    end 
    end 
end 

puts "Insert duplicate file name" 
file_name = gets.chomp 
file_name = file_name+".csv" 
CopyFile.create_duplicate_file(file_name) 

puts "\nDuplicate File Created." 

私は、二回のヘッダーをコピーすると、コンテンツをコピーするには1をinput.csvファイルを開封しております。

私のコードを最適化したい。それで、それをさらに最適化する方法はありますか?

+0

あなただけのファイル全体をコピーしないのはなぜ? –

答えて

-1

だけcpmethodを使用しない: FileUtils.cp(src, destination, options)、車輪の再発明をする必要が、このように:まだ

class CopyFile 
    def self.create_duplicate_file(file_name) 
    FileUtils.cp('input.csv',file_name) 
    end 
end 

以上:

file_name = gets.chomp 
file_name = file_name+".csv" 
FileUtils.cp('input.csv', file_name) 
+0

モジュールメソッドは明示的なモジュール指定なしでは任意に呼び出すことはできません。 'FileUtils.cp'は動作しますが、' cp'は明らかにそうではありません。 – mudasobwa

関連する問題