我有大约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
根据当前系统时间命名输出文件。
但我想将当前时间从系统更改为输入文件名。
答案 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
这是一个非常简单的例子。我避免将输出文件放在与输入文件相同的目录中,这样当你第二次运行程序时,你就不会再错误地读取它们。