Bonjour à tous,
Je dois vérifier que mes résultats sont cohérents. Pour se faire j'essaye de parser un fichier csv qui contient mes résultats et je dois vérifers des contraintes (>=, <=) pour vérifier que tout marche bien.
Voilà mon format de fichier :
Et voilà mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 FILE1 var1;var2;var3;var4;var5;var6;var7;var8;var9;var10;var11 0.01;0.8;0.6;670;48;108;1218;19.25;20.09;22.79;0.72 0.01;0.95;0.6;255;48;108;1218;18.765;19.41;22.40;0.72 0.01;0.9;0.6;285;48;108;1218;18.815;19.47;21.66;0.67 0.05;0.8;0.6;194;0;12;546;3.285;3.87;4.71;0.41 0.05;0.95;0.6;36;0;12;546;3.455;4.06;5.08;0.30 0.05;0.9;0.6;63;0;12;546;3.332;3.80;4.73;0.42 0.1;0.8;0.6;117;0;12;352;2.876;3.28;4.23;0.34 0.1;0.95;0.6;27;0;12;266;2.643;3.10;3.92;0.39 0.1;0.9;0.6;54;0;12;343;2.732;3.14;4.06;0.34 0.2;0.8;0.6;54;0;12;198;0.72;1.18;1.84;0.13 0.2;0.95;0.6;27;0;12;72;0.677;1.14;1.86;0.14 0.2;0.9;0.6;33;0;12;108;0.755;1.03;1.70;0.11 FILE2 var1;var2;var3;var4;var5;var6;var7;var8;var9;var10;var11 0.01;0.8;0.6;150;0;0;0;0.215;0.50;0.92;0.07 0.01;0.95;0.6;96;0;0;0;0.181;0.45;0.77;0.07 0.01;0.9;0.6;129;0;0;0;0.206;0.45;0.80;0.07 0.05;0.8;0.6;150;0;0;0;0.211;0.45;0.82;0.07 0.05;0.95;0.6;96;0;0;0;0.209;0.45;0.81;0.06 0.05;0.9;0.6;129;0;0;0;0.211;0.45;0.78;0.08 0.1;0.8;0.6;150;0;0;0;0.206;0.59;0.95;0.08 0.1;0.95;0.6;96;0;0;0;0.249;0.56;1.01;0.08 0.1;0.9;0.6;129;0;0;0;0.251;0.72;1.15;0.07 0.2;0.8;0.6;129;0;0;39;0.17;0.45;0.78;0.07 0.2;0.95;0.6;85;0;0;21;0.169;0.55;0.85;0.07 0.2;0.9;0.6;112;0;0;21;0.169;0.42;0.77;0.07
Mon code fonctionne quand je n'ai qu'un seul bloc (FILE1) dans mon fichier résultat. Le problème vient quand j'en ai deux (FILE1 et FILE2), car il ne faut pas qu'il compare des résultats pour des fichiers résultats différents. Et je ne sais pas comment lui dire de faire ceci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 #! /usr/bin/perl $normal = "/home/lovelace/Bureau/verification/resultats.csv"; open(RESULT,"$normal") or die "Unable to open"; my (@var1, @var2, @var3, @var4, @var5, @var6, @var7); $ct = 1; while (my $line = <RESULT>){ if($line =~ /^[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/) { chomp $line; $var1[$ct] = $1 if $line =~ /^([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var2[$ct] = $1 if $line =~ /^[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var3[$ct] = $1 if $line =~ /^[0-9.]+;[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var4[$ct] = $1 if $line =~ /^[0-9.]+;[0-9.]+;[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var5[$ct] = $1 if $line =~ /^[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var6[$ct] = $1 if $line =~ /^[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $var7[$ct] = $1 if $line =~ /^[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+;([0-9.]+);[0-9.]+;[0-9.]+;[0-9.]+;[0-9.]+$/; $ct++; } } close RESULT; $fail = 0; for ($i=1; $i<$ct && $fail == 0; $i++){ #print "$var1[$i];$var2[$i];$var3[$i];$var4[$i];$var5[$i];$var6[$i];$var7[$i]\n"; for ($j=$i+1; $j<$ct && $fail == 0; $j++){ if(($var1[$i] == $var1[$j]) && ($var2[$i] == $var2[$j])){ if(($var3[$i]>=$var3[$j]) && (($var4[$i]>$var4[$j]) || ($var5[$i]>$var5[$j]) || ($var6[$i]>$var6[$j]) || ($var7[$i]>$var7[$j]))){ print "FAIL with 3.1\n"; $fail = 1; } if(($var3[$i]<$var3[$j]) && (($var4[$i]<$var4[$j]) || ($var5[$i]<$var5[$j]) || ($var6[$i]<$var6[$j]) || ($var7[$i]<$var7[$j]))){ print "FAIL with 3.2\n"; $fail = 1; } } if(($var1[$i] == $var1[$j]) && ($var3[$i] == $var3[$j])){ if(($var2[$i]>=$var2[$j]) && (($var4[$i]>$var4[$j]) || ($var5[$i]>$var5[$j]) || ($var6[$i]>$var6[$j]) || ($var7[$i]>$var7[$j]))){ print "FAIL with 2.1\n"; $fail = 1; } if(($var2[$i]<$var2[$j]) && (($var4[$i]<$var4[$j]) || ($var5[$i]<$var5[$j]) || ($var6[$i]<$var6[$j]) || ($var7[$i]<$var7[$j]))){ print "FAIL with 2.2\n"; $fail = 1; } } if(($var2[$i] == $var2[$j]) && ($var3[$i] == $var3[$j])){ if(($var1[$i]>=$var1[$j]) && (($var4[$i]>$var4[$j]) || ($var5[$i]>$var5[$j]) || ($var6[$i]>$var6[$j]) || ($var7[$i]>$var7[$j]))){ print "FAIL with 1.1\n"; $fail = 1; } if(($var1[$i]<$var1[$j]) && (($var4[$i]<$var4[$j]) || ($var5[$i]<$var5[$j]) || ($var6[$i]<$var6[$j]) || ($var7[$i]<$var7[$j]))){ print "FAIL with 1.2\n"; $fail = 1; } } } } if ($fail == 0){ print"SUCCESS\n"; $fail = 1; }
Pouvez vous m'aider s'il vous plaît?
Par ailleurs n'y a t'il pas une méthode plus simple et propre pour faire mes regex?
Bonne soirée
Partager