Re: exercice python

Page principale

Répondre à ce message
Auteur: Miguel Moquillon
Date:  
À: guilde
Sujet: Re: exercice python
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