MAC OS X et Sed : remplacer tabulation par ;

Après m’être bataillé pour remplacer des tabulations (TAB) par des ‘;’ avec l’outil en ligne de commande ‘sed’ sur MAC OS X, je vous livre simplement la solution :

sed "s/[CTRL+V][CTRL+i]/;/g" fichier.txt > fichier_modifie.txt

Sur le web, vous trouverez souvent :
sed "s/\t/;/g" fichier.txt > fichier_modifie.txt

NON NON NON, sur MAC OS X le terminal n’est pas capable de comprendre ce littéral.

Enjoy

Django – standalone script

Par moment, avec une application django tu voudrai créer des scripts en dehors de l’environnement d’exécution django pour automatiser certaines tâches … La mienne étant de générer des données faussement bidons…

S’en suit une recherche sur internet et quelques éléments de réponse :

1.  Un script :

import os
import sys

sys.path.append(“/Users/said/path/monprojet_web/”)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘monprojet_web.settings’

Qui fonctionnera si ta structure du projet n’a pas changé d’un ioata, ou qui plantera à coup sûr si tu as suivi ce tuto. (apps/monapp)

Pour remerdier à ce foutu problème, ajoute cette ligne pour que le script finale ressemble à ça :

import os
import sys

sys.path.append(“/Users/said/path/monprojet_web/”)
sys.path.append(“/Users/said/path/monprojet_web/apps/”)

os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘monprojet_web.settings’

Ensuite pour éviter de réécrire toutes ces lignes, tu peux les incorporer dans un module et faire un import de celui-ci.

A la fin, tu pourra importer tes modèles comme ceci :

import Standalone_django_script

from monapp.models import MaClasse

# Anything you want:
print MaClasse.objects.all()

Sinon une des solutions les plus sympa, c’est d’utiliser django-extensions, avec sa commande runscript. Allez c’est par ici

Pour résumer :

1 – Installer l’extension et ajouter l’application au fichier settings.py
2 – Créer un repertoire “scripts” et un fichier “__init__.py” dans ce répertoire
3 – Crée ton script dans le répertoire “scripts”. Sache que chaque fichier doit posséder une méthode “run” qui est le point d’entrée.
4 – “python manage.py runscript monscript” sans l’extension “py”

Et j’oubliais, pour générer mes données, j’utilise model-mommy

Enjoy !