【问题标题】:How to remove redundant file open operation in ruby如何在 ruby​​ 中删除多余的文件打开操作
【发布时间】:2017-07-11 08:49:47
【问题描述】:

我制作了一个 ruby​​ 程序来将一个 CSV 文件的内容复制到一个新的 CSV 文件中。

这是我的代码 -

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."

我打开 input.csv 文件两次,一次是复制标题,然后是复制内容。

我想优化我的代码。那么有没有办法进一步优化呢?

【问题讨论】:

  • 为什么不直接复制整个文件?

标签: ruby ruby-csv


【解决方案1】:

只需使用cp methodFileUtils.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)

【讨论】:

  • 在没有明确的模块规范的情况下不能任意调用模块方法。 FileUtils.cp 会起作用,cp 显然不会。
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多