Difference between revisions of "Prova pratica 2015.01.21"
Jump to navigation
Jump to search
(Created page with "Testo: [http://www.cs.unibo.it/~renzo/so/pratiche/2015.01.21.pdf] Esercizio 3 <syntaxhighlight lang="Python"> #!/usr/bin/python """ Esercizio 3: Script bash o Python: (10 pu...") |
m |
||
Line 54: | Line 54: | ||
[[User:S.G|S.G]] ([[User talk:S.G|talk]]) 14:39, 18 November 2016 (CET)<br> | [[User:S.G|S.G]] ([[User talk:S.G|talk]]) 14:39, 18 November 2016 (CET)<br> | ||
Ho scritto una possibile soluzione dell'esercizio 3 | Ho scritto una possibile soluzione dell'esercizio 3 | ||
+ | |||
+ | '''perché proporre una soluzione in un linguaggio che non ho ancora spiegato?'''[[User:Renzo|Renzo]] ([[User talk:Renzo|talk]]) 19:36, 21 November 2016 (CET) |
Revision as of 19:36, 21 November 2016
Testo: [1]
Esercizio 3
#!/usr/bin/python
"""
Esercizio 3: Script bash o Python: (10 punti):
Scrivere un programma python o uno script bash che scandisca il sottoalbero relativo alle directory passate come
parametri (o alla direcotry corrente se non ci sono parametri) e fornisca in output l'elenco dei file che hanno la
stessa somma MD5 (i.e. l'output del comando md5sum).
In output ogni riga deve mostrare un elenco di pathname realtivi a file che hanno la stessa somma MD5 (che quindi
sono molto molto probabilmente uguali).
"""
import sys
import os
import hashlib
def sha1sum(root, filename):
sha1 = hashlib.sha1()
with open(os.path.join(root, filename), "rb") as thefile:
buf = thefile.read()
sha1.update(buf)
return sha1.hexdigest()
def initSha1vect(path):
""" Inizializza il dizionario utilizzando come chiave il sha1
del file, e come valore il percorso del file. """
shafiles = {}
for root, dirs, files in os.walk(path):
for file in files:
shaKey = sha1sum(root, file)
shafiles.setdefault(shaKey, [])
shafiles[shaKey].append(file)
return shafiles
def main(args):
for path in args:
msg = True
print "\n", path
shafiles = initSha1vect(path)
for k in shafiles:
if len(shafiles[k]) > 1:
msg = False
print k, "\t", shafiles[k]
if msg:
print "Nessun file con lo stesso sha1"
if __name__ == "__main__":
main(sys.argv[1:])
S.G (talk) 14:39, 18 November 2016 (CET)
Ho scritto una possibile soluzione dell'esercizio 3
perché proporre una soluzione in un linguaggio che non ho ancora spiegato?Renzo (talk) 19:36, 21 November 2016 (CET)