Bonjour,
Voila je rencontre un petit problème avec mon code.
Je suis administrateur réseau au sein de mon entreprise, on m'a donc demandé de créer une moulinette afin de comparer deux fichier CSV et recuperer la différence entre les deux fichiers dans un troisième fichier pour que celui soit importé dans un logiciel.
Etant débutant en ruby et en programmation pour des besoins personnels, j'ai souhaité le faire dans ce langage car cela serait un bon exercice. Mais voila le code que j'ai reussit à récupérer ne me donne pas le résultat que je veux.
ci-dessous mon code:
# -*- coding: utf-8 -*-
require 'csv'
csv_sami = File.read('sami.csv')
csv_loupe = File.read('loupe.csv')
csv1 = CSV.parse(csv_sami, :headers => true, :col_sep => ";")
csv2 = CSV.parse(csv_loupe, :headers => true, :col_sep => ";")
CSV.open("csv_out.csv", "wb") do |csv|
csv2.each do |row1|
i = 0
csv1.each do |row|
if (row['Exercice'] == row1['exercice'] && row['SIREN'] == row1['siren_adhérent'])
i = 1
break
end
end
if i == 0
csv << row1
end
end
end
Je voudrai que csv_out.csv contienne les lignes en trop de CSV2
Alors qu'en executant ce code, j'obtiens bien le fichier csv_out.csv mais sans traitement, le fichier contient tout le contenu du fichier csv2
Je vous remercie d'avance pour votre aide car je bloque un peu
Bonsoir,
Voici ce que moi je ferai :
# -*- coding: utf-8 -*-
require 'csv'
# On met le fichier sami.csv et loupe.csv dans des variables qui seront de types array
csv_sami = CSV.read('sami.csv')
csv_loupe = CSV.read('loupe.csv')
#On compare les deux arrays
diff = csv_sami - csv_loupe
#On affiche le diff
puts diff
# On créé le troisieme fichier qui contient la différence
IO.write('name-diff.csv', diff.map(&:to_csv).join)
Cordialement