Remettre une tartine dans l'ordre
De Centre de Ressources Numériques - Labomedia
Révision de 24 janvier 2015 à 16:44 par Olivier (discussion | contributions)
Remettre une tartine dans l'ordre |
---|
Pour modifier la page utiliser l'onglet Modifier avec formulaire.
Résumé | Permet de remettre une tartine dans l'ordre. |
---|---|
Auteur(s) | 01ivier |
Licence | CC-BY-SA 3 |
Date de création | 01 décembre 2014 |
Sommaire
Intentions / Contexte
La 182 ème tartine ayant été postée dans le désordre, je souhaitais proposer un moyen de la remettre dans l'ordre..
Principe de fonctionnement
Un script en python lit le fichier "tartine_en_desordre.txt", remet toutes ses lignes dans l'ordre et les écrit dans le fichier "tartine_ordonnee.txt"
Besoins / Compétences
De la volonté.
Documentation
Qu'est-ce qu'une tartine ?
C'est expliqué ici.
Que faut-t-il faire pour remettre la 182ème tartine dans l'ordre ?
- créer un dossier genre "tartine" sur le Bureau et inclure les fichiers ci-dessous :
- copier/coller le script ci-dessous dans un fichier texte nommé "ordonnons-la-tartine.py"
- copier/coller la tartine que vous avez reçue dans un fichier texte nommé "tartine_en_desordre.txt"
- placer ces 2 fichiers dans le répertoire créer plus haut : "tartine".
- ouvrir un terminal et accéder au dossier sur le bureau
cd /home/MonNom/Bureau/tartine
ou avec cette commande simplifiée
cd ~/Bureau/tartine
6. exécuter le script avec la ligne de commande suivante :
python ordonnons-la-tartine.py
Un fichier "tartine_ordonnee.txt" a normalement été créé aux côtés des deux autres.
Si vous êtes resté bloqué à la 6ème étape, il faut venir aux Open Atelier du Labomedia le jeudi (LOL).
Les erreures
Avec Debian Jessie, j'ai ce retour:
$ python ordonnons-la-tartine.py
Traceback (most recent call last):
File "ordonnons-la-tartine.py", line 20, in <module>
dico_tartine[int(ligne[:3])] = ligne[4:]
ValueError: invalid literal for int() with base 10: 'exq'
Le script
# -*- coding: utf-8 -*-
# On crée un dictionnaire vide
dico_tartine = {}
# On ouvre le fichier tartine.txt et on le place
# dans une variable que l'on appelle la_tartine_dans_le_desordre
with open ("tartine_en_desordre.txt", 'r') as la_tartine_dans_le_desordre:
# Pour chacune des lignes de la_tartine_dans_le_desordre...
for ligne in la_tartine_dans_le_desordre:
# on enlève les retours chariot en fin de ligne
#ligne = ligne.rstrip('\n\r')
# on regarde les 2 premiers caractères
# qui correspondent au numéro des lignes de la tartine dans l'ordre
# et on crée une entrée dans le dictionnaire dont la 'clé" est
# ce numéro et la 'valeur' le reste de la ligne.
dico_tartine[int(ligne[:3])] = ligne[4:]
with open ("tartine_ordonnee.txt", 'w') as la_tartine_dans_l_ordre:
# On compte de 0 jusqu'au nombre d'élément dans le tableau (moins un)
for numero in range(len(dico_tartine)):
la_tartine_dans_l_ordre.write(dico_tartine[numero])
En Ruby
content = []
File.open("original.txt", "r") do |f1|
while (line = f1.gets)
content[line.split(' ').first.to_i] = line
end
end
File.open('order.txt', 'w') do |f2|
content.each do |line|
f2.puts line
end
end