Aggiorna cartelle (Prova pratica 23-01-2014)
Jump to navigation
Jump to search
Il comando che dovrete implementare come script shell o programma python e' updatedir. Updatedir prende due directory come parametri.
updatedir dira dirb
Deve copiare in dirb tutti i file regolari che sono in dira e non in dirb. Se un file regolare e' presente con lo stesso nome sia in dira sia in dirb, il file deve essere copiato dalla dira alla dirb solo se i contenuti differiscono.
Soluzione di Claudio Kerov e Stefano Zaniboni
#!/usr/local/bin/python3
import os
import sys
import filecmp
import shutil
if not os.path.isdir(sys.argv[1]):
sys.exit(sys.argv[1]+" non è una directory!")
if not os.path.isdir(sys.argv[2]):
sys.exit(sys.argv[2]+" non è una directory!")
dir1= sys.argv[1]
dir2= sys.argv[2]
lista=[]
for path, dirnames, filenames in os.walk(dir2):
for filename in filenames:
if(os.path.isfile(dir2+filename)):
lista.append(filename)
for path, dirnames, filenames in os.walk(dir1):
for filename in filenames:
if(os.path.isfile(dir1+filename)):
if filename in lista:
if not filecmp.cmp(dir1+filename, dir2+filename):
shutil.copyfile(dir1+filename, dir2+filename)
print("Ho copiato",filename+"! (diff)")
else:
shutil.copy(dir1+filename, dir2)
print("Ho copiato", filename+"!")