我有大约100个输入文件,经过处理后,会生成超过2000个输出文件。我想根据输入文件的名称来命名输出文件。
下面是我运行的命令:
Start cmd /k "G:Path\eachGeo.bat G:\Path\InputGeo\*.csv"
通过执行.bat
文件,通过cmd
读取输入文件。输出存储在不同的路径中:
outputfilename = 'Path\outputGeo\\' + Time.now.to_i.to_s +
'_' + eachTag[45..54] + '_output.csv'
在上面的代码中,我使用Time.now.to_i.to_s
根据当前系统时间命名输出文件。
我想将其更改为输入文件的名称。
发布于 2017-03-02 07:43:39
通常你会像这样处理它,你使用像File.basename
这样的东西来提取原始文件路径的相关部分:
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
这是一个非常简单的例子。我会避免将您的输出文件放在与输入文件相同的目录中,这样您在第二次运行程序时就不会再次错误地读取它们。
https://stackoverflow.com/questions/42549364
复制