Back to posts Edit this post
Copy content

02 Dec 12:42

require 'zip' require 'csv' SOURCE_DIR = "./zips" # katalog z zipami TARGET_STATION = "CZERNICHÓW-PROM" # stacja do filtrowania OUTPUT_FILE = "wynik.csv" # przygotowanie pliku wynikowego CSV.open(OUTPUT_FILE, "w") do |csv_out| # nagłówka brak w źródłach → możesz dodać własny # csv_out << ["id", "station", "river", "year", "month", "day", "value1", "value2", "value3", "code"] Dir.glob(File.join(SOURCE_DIR, "*.zip")).each do |zipfile| puts "Przetwarzam: #{zipfile}" Zip::File.open(zipfile) do |zip| zip.glob("*.csv").each do |entry| puts " - CSV: #{entry.name}" entry.get_input_stream.each_line do |line| # parsowanie wiersza CSV row = CSV.parse_line(line) # skip pustych next if row.nil? || row.empty? # stacja jest w kolumnie 1 (licząc od 0) if row[1] == TARGET_STATION csv_out << row end end end end end end puts "Zakończono! Wynik zapisano do #{OUTPUT_FILE}"

No files