Je pense que ce premier exemple, bien que très pratique, se passe d’explications tellement il est simple. Je vous invite donc à simplement lire le code.
Fonctions du script
- Ouvre tous les fichiers d’un répertoire source
- Lit les lignes du fichier ouvert, remplace la chaîne motif par la chaîne de remplacement
- Ouvre un fichier du même nom que le fichier source dans le répertoire cible (en écriture) et y inscrit la chaîne transformée
- Referme proprement les fichiers
#!/usr/bin/env python #-*-coding: utf-8 -*- '''Script de remplacement d'une chaîne par une autre dans plusieurs fichiers. Usage : python rempl.py [options] [paramètres] Options : -h --help aide..... -s --source= suivi du nom de repertoire source ....... -c --cible= suivi du nom de repertoire cible -f suivi de la chaine a remplacer -g suivi de la nouvelle chaine Exemple : python rempl.py -f "toto" -g "titi" -s data/source -c data/cible ''' import getopt import sys import os import os.path def usage(): print __doc__ def initialisation(argv): try: opts, args = getopt.getopt(argv, "hs:c:f:g:", ["help", "source=","cible="]) except getopt.GetoptError: usage() sys.exit(2) string1,string2 = "","" source,cible = sys.path[0],sys.path[0] for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ("-s", "--source"): source = arg elif opt in ("-c", "--cible"): cible = arg elif (opt == "-f"): string1 = arg elif (opt == "-g"): string2 = arg if string1 == "": print "Le texte a remplacer ne peut etre vide...\n" usage() sys.exit() if not os.path.isdir(source): print "source : ",source source = os.path.join(os.getcwd(),source) if not os.path.isdir(source): print "Le repertoire source est mal defini...\n" usage() sys.exit() if not os.path.isdir(cible): cible = os.path.join(os.getcwd(),cible) if not os.path.isdir(cible): print "Le repertoire cible est mal defini...\n" usage() sys.exit() source = os.path.abspath(source) cible = os.path.abspath(cible) if source == cible: print "Le repertoire source et le repertoire cible ne peuvent etre identiques..." sys.exit() print "source : ",source print "cible : ",cible print "chaine a remplacer : ",string1 print "chaine de remplacement : ",string2 choix = raw_input("Souhaitez-vous continuer (o/n) ? ") retour = [choix,source,cible,string1,string2] return retour def remplace(source, cible, string1, string2): filelist = os.listdir(source) compteur = 0 for myfile in filelist: soufile = os.path.join(source,myfile) if os.path.isfile(soufile): cifile = os.path.join(cible,myfile) opsoufile = open(soufile,'r') opcifile = open(cifile,'w') while 1: lig = opsoufile.readline() if lig == '': break newlig = lig.replace(string1,string2) opcifile.write(newlig) opsoufile.close() opcifile.close() compteur += 1 print compteur, " fichiers traités" def main(argv): params = initialisation(argv) if (params[0] != "o"): print "Aucune donnée n'a été modifiée - Fin de script." sys.exit() else: remplace(params[1],params[2],params[3],params[4]) if __name__ == "__main__": main(sys.argv[1:])