Bonjour à tous,
Voici un exemple de scripts perl, python et même ruby pour ceux que cela
interesse, qui font l'exercice que j'avais proposé:
=========================================================================
#!/usr/bin/perl
my ($file_in, $file_out, $text) = (@ARGV[0], @ARGV[1],'');
open (MY_FILE, "<$file_in") or die "Cannot open file $file_in\n";
while (<MY_FILE>) {
s/\n/ / if (($. - 1) % 2 == 0);
$text .= $_;
}
close (MY_FILE);
open (RESULT_FILE, ">$file_out") or die "Cannot open file $file_out\n";
print RESULT_FILE $text or die "Cannot write data in file $file_out\n";
close (RESULT_FILE);
==========================================================================
#!/usr/bin/env python
import sys
import os
import re
file_in, file_out, text, i = sys.argv[0], sys.argv[1], '', 1
if not os.access(file_in, os.F_OK):
print 'Cannot open file ' + file_in + '\n'
sys.exit( 1 )
my_file = open( file_in, 'r' )
for line in my_file:
if i % 2: text += re.sub( "\n", "", line)
i = i + 1
my_file.close()
my_file = open( file_out, 'w' )
if my_file == None:
print 'Cannot open file' + file_out + '\n'
sys.exit( 1 )
my_file.write( text )
my_file.close()
========================================================================
#!/usr/bin/env ruby
file_in, file_out, text, i = ARGV[0], ARGV[1], '', 1
if not File.exist? file_in
print "Cannot open file #{file_in}\n"
Kernel.exit 1
end
File.foreach file_in do |line|
line.gsub! "\n", "" if i % 2 == 0
text << line
i = i + 1
end
my_file = File.open file_out, "w"
if my_file == nil
print "Cannot open file #{file_out}\n"
Kernel.exit 1
end
my_file << text
my_file.close
===========================================================================
Voici les temps d'exécution sur la machine de mon boulot:
Un PIII 800MHz, 512Mo de RAM, Debian GNU/Linux sarge avec un noyau 2.6.10-1-686
Fichier texte de 150 lignes (moyenne de 5 essais)
le script perl:
real 0m0.010s
user 0m0.005s
sys 0m0.004s
le script python:
real 0m0.052s
user 0m0.040s
sys 0m0.010s
le script ruby:
real 0m0.019s
user 0m0.015s
sys 0m0.003s
--
Miguel Moquillon <miguel.moquillon@???>
http://miguel.moquillon.free.fr