Search and replace by
neoQuante 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 commentiNumero commenti inviati: 0