Home Page  >>>  Free Your Mind  >>>  Python

Registrati su TheZion
Password Persa




Search and replace by neo
Quante volte ci si e' accorti che i n-mila file contenuti in una cartella necessitavano di una modifica infinitesima?


Apportare la modifica aprendo e chiudendo i file con un editor di testo (quanta, kate, notepad ecc..) oltre ad essere di una noia mortale ci espone al rischio di dimenticare qualche file della nostra cartella.


Lo script python che segue effettua le modifiche per noi.


#!/usr/bin/python


import string

import os

import sys

listArg=sys.argv[1:]



folderDest=listArg[0]

stringaSearch=listArg[1]

stringaReplace=listArg[2]

files=os.listdir(folderDest)


for item in files:

    file=open(folderDest+item,"r")

    content=file.read()

    if string.find(content,stringaSearch)>-1:

        print item

        newContent=string.replace(content,stringaSearch,stringaReplace)

        file.close()

        file=open(folderDest+item,"w")

        file.write(newContent)



la sintassi di utilizzo (ipotizzando il nome del file in rimpiazzaStringa.py) su un sistema linux è la seguente:

./rimpiazzaStringa.py [folder Da Esaminare] [stringa da cercare] [stringa da rimpiazzare]


Ovviamente lo script deve avere permessi di esecuzione (chmod 777 rimpiazzaStringa.py).


Lo script e' molto semplice.

La prima riga indica la posizione dell'interprete al sistema ed e' necessaria solo su linux.

Nell'ordine vengono importati poi i seguenti moduli:


string per permettere la ricerca delle stringhe
os per eseguire la scansione delle directory
sys per gestire il passaggio dei parametri da riga di comando

Lo script con il metodo listdir del modulo os legge il contenuto della directory bersaglio, e un ciclo for apre in lettura ogni file della directory.

Se viene trovata la stringa cercata allora al contenuto del file viene applicato il metodo replace del modulo string e il nuovo contenuto viene salvato nel file.

Neo

Leggi commenti

Numero commenti inviati: 0