簡體   English   中英

在相對於rake任務的位置處理CSV文件

[英]Process CSV files in location relative to rake task

我有一個rake任務和需要處理的CSV文件。 它們位於lib\\tasks目錄的子目錄中:

\foo
  one.csv
  two.csv
  ...
  foo.rake

任務:

task foo: :environment do

  # for each file in directory
  Dir.foreach("./*.csv") do |file|   # not valid

    # process CSV file's content
    CSV.foreach(file, {:headers => true, :col_sep => ";"}) do |row|
      ...
    end

  end # Dir

end # task

如何引用與rake任務相關的文件?

我需要考慮更多,我認為結合File.joinDir.glob將允許您處理所有的csv文件:

require "csv"

foo_dir = File.join(Rails.root, "lib", "tasks", "foo")

task foo: :environment do

  # for each file in directory
  Dir.glob(foo_dir + "/*.csv") do |csv_file|

    # process CSV file's content
    CSV.foreach(csv_file, {:headers => true, :col_sep => ";"}) do |row|
      #...
    end

  end # Dir

end # task

編輯:正如@craig在下面的注釋中指出的那樣,可以通過使用File.dirname__FILE__更加簡潔地完成此操作:

require "csv"

task foo: :environment do

  # for each file in directory
  Dir.glob(File.dirname(__FILE__) + "/*.csv").each do |file|

    # process CSV file's content
    CSV.foreach(csv_file, {:headers => true, :col_sep => ";"}) do |row|
      #...
    end

  end # Dir

end # task

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM