salut
Oh que si nous somme entrain de résoudre un problème , plus
sérieux que tu peux l'imaginer
Séno Hervé Edorh
--
@alioune bnjr je pense que je me suis fait comprendre que je voulais
juste partager avec vous ce script en Perl et de voir si on pouvait
faire aussi court avec du Python. Je ne demande pas de m'aider à
résoudre un problème
--
Tu as beau trouvé que ceci est beau , mais rien
n'indique a un gosse de dix ans qu'on est entrain d'ouvrir
un fichier , de lire des tableaux et d'écrire dans un fichier
awk '!a[$0]++' < mon_fichier.txt > nouveau_fichier.txt
Par contre si je montre ca
a un gosse de Dix ans , si en plus il a tété l'anglais il comprends ,
rien quand lisant
file =open('a.txt' , 'r') # J'ouvre un fichier
# Dans l'apprentissage , je lui
précise
# juste que 'r' c'est un lecture
(read)
file2 =open('b.txt' , 'w') # J'ouvre un fichier
# Dans l'apprentissage , je lui
précise
# juste que 'w' c'est ecire (write)
lines =set(f.readlines()) # Comme il a tété l'anglais il sait que
readline
# c'est lire un fichier
file2.writelines(lines) # writelines c'est ecire dans un fichier
tout ce qu'on est entrain de Faire le gosse le comprends en 10 minutes ,
( Pas étonnant que les Américains vont sur la lune , pendant qu'on hume
l'air frais :)
trouvez un truc beau ,c'est bien mais se faire comprendre est
meilleur:
--
Perl -- Bigger and has a vowel. However you'll note that it isn't
a common english word; you'll have to know what you're doing to
use it, especially with spell-checkers which otherwise complain
that it looks like noise.
Python -- This is a Real English Word (honest, look it up!) that
happens to refer to a type of snake, which you'll notice is an
object. With the two vowels, python is quite readable.
--Ad
Le 19 novembre 2012 14:25, Séno Hervé Edorh <[email protected]
<mailto:[email protected]>> a écrit :
@alioune bnjr je pense que je me suis fait comprendre que je
voulais juste partager avec vous ce script en Perl et de voir si
on pouvait faire aussi court avec du Python. Je ne demande pas de
m'aider à résoudre un problème. Donc pour en venir à ce qu'on
disait Je pense aussi que les goûts et les couleurs se discutent.
J'aime bien ce code simple en Perl et je le trouve beau
@antoine merci pour awk. Je vais bouquiner un peu dessus. J'y ai
jamais touché
On Nov 19, 2012 12:51 PM, "Alioune Dia" <[email protected]
<mailto:[email protected]>> wrote:
Salut
Choisir un langage de programmation en se basant sur des criteres
subjectifs (C'est beau, ce n'est pas beaux, c'est court , c'est
long ), c'est bien , mais l'idéal c'est de se focaliser sur le
problème que nous voulons résoudre dans un premier temps et
ensuite
sur les criteres esthétiques
Si je dois écrire un programme informatique qui doit par exemple
attendre qu'un programme A dépose un fichier B dans un dossier
D, pour le trier et le renommer en E et dire au programme
A j'ai fini mon travail, il est dans le dossier F, tu peux
continuer
ton travail. L'aspect tri devient une infime partie d'un
problématique
plus globale. Dans la réalité les choses sont plus complexes et
gérer l'interaction est un défit, le meilleur langage selon
moi c'est
celui qui fixe un problème réel :)
--
Le 19 novembre 2012 11:14, Antoine Delvaux
<[email protected] <mailto:[email protected]>> a écrit :
Salut,
Sans vouloir relancer la discussion sur la lisibilité
d'une commande ou d'un bout de code [1], dans les
'oneliners' et outils cli, il y a aussi awk qui est très
efficace :
awk '!a[$0]++' < mon_fichier.txt > nouveau_fichier.txt
Mieux que sort -u :), merci
--
"sort -u" est effectivement pas mal aussi, mais a le
désavantage de trier le fichier, alors que les solutions
perl, python et awk ne trient rien du tout.
Il est peut-être aussi utile d'expliquer cette expression
awk (qui est quasiment identique à l'expression perl du
début de la discussion), comme ça on appréhende la
puissance de cet outil petit à petit. L'explication est
la suivante :
- $0 est la ligne courante, cette expression va servir
d'index au tableau (c'est le $_ en perl)
- a[] est un tableau qui va contenir le compte du nombre
de lignes identiques (c'est le $lignes en perl)
- si l'expression donnée à awk est vraie, alors la ligne
courante ($0) est copiée en sortie (ce qui sera le cas
pour la première occurrence d'une ligne)
- si l'expression donnée à awk est fausse, alors rien
n'est ajouté à la sortie (ce qui sera le cas pour toutes
les répétitions de ligne)
La différence entre perl et awk, est qu'awk est un outil
fait pour lire les fichiers, ligne par ligne, alors que
perl est un langage de programmation (qui peut donc aussi
lire des fichiers ligne par ligne). C'est pourquoi il est
nécessaire de lancer 'perl -n' qui, en fait, englobe
l'expression donnée dans une boucle 'while' sur la lecture
du fichier.
--
Alors que les constructions de tableau dans les exemples
python sont moins intuitives.
-1
>>> type(open('a.txt', "r").readlines())
<type 'list'>
Je n'ai pas besoin de construire quoi que ce soit ici,
certainement pas
un tableau :)
--
Bonne journée,
Antoine.
[1] La lisibilité d'un code peut fortement dépendre à quel
langage et syntaxe on est habitué. Ne mangeant pas du
serpent tous les jours, il m'a fallu plus de temps pour
comprendre l'exemple en python que celui en perl... Et je
parle ici de lisibilité ... la beauté ? Encore plus
subjectif....
--Ad