如何根据输入文件写入文件名

时间:2017-03-02 07:36:11

标签: ruby csv filenames

我有大约100个输入文件,经过处理后生成超过2000个输出文件。我试图根据输入的名称命名输出文件。

Start cmd /k "G:Path\eachGeo.bat G:\Path\InputGeo\*.csv"

通过执行cmd.bat读取输入,输入存储在不同的路径中。

outputfilename = 'Path\outputGeo\\' + Time.now.to_i.to_s + 
                 '_' + eachTag[45..54] + '_output.csv'

在上面的代码行中,我使用Time.now.to_i.to_s根据当前系统时间命名输出文件。

但我想将当前时间从系统更改为输入文件名。

1 个答案:

答案 0 :(得分:1)

通常情况下,您可以像File.basename那样使用{{3}}之类的内容来解决原始文件路径的相关部分:

Dir.glob("path/*.csv") do |path|
  CSV.open(path) do |csv_in|
    # ...

    out_path = "output_path/%s_%s.csv" % [
       File.basename(path, ".csv"),
       each_tag[45..54]
    ]

    CSV.open(out_path, "w") do |csv_out|
      # ...
    end
  end
end

这是一个非常简单的例子。我避免将输出文件放在与输入文件相同的目录中,这样当你第二次运行程序时,你就不会再错误地读取它们。