User:Python

From Sistemi Operativi
Jump to navigation Jump to search
  1. ESERCIZIO 3 ESAME 20 GIUGNO 2013
  2. Scrivere un programma python o uno script bash per cercare all'interno
  3. della directory corrente tutti i file che abbiano lo stesso contenuto


import os,sys import filecmp

def ordina(A,B):

   for i in range(0,len(B)) :
       for j in range(i,len(B)) :
           if(B[i]>B[j]) :
               A[i],A[j]=A[j],A[i]
               B[i],B[j]=B[j],B[i]
   return A,B
           
     

def main() :

   A=[]
   B=[]
   l=[]
   H={}
   P=[]
   print os.getcwd()
   pa=os.getcwd()
   for root, dirs, files in os.walk(pa):
       if(root != pa):
           H[root]=0
   for root, dirs, files in os.walk(pa):
       if (root == pa) :
           for name in files :
               f = pa + '/' + name
               A = os.listdir(pa)
   P = H.keys()
   for i in A :
       f = pa + '/' + i
       c = f in P
       if(c == 1) :
          A.remove(i)
   x=-1
   for root, dirs, files in os.walk(pa):
       if (root == pa) :
           for name in files :
               c = name in A
               if(c == 1) : 
                   x=x+1
                   statinfo = os.stat(name)
                   B.insert(x,statinfo.st_size)
   print
   l=list()
   (A,B)=ordina(A,B)
   j=1
   c=0 
   z=0         
   for i in range(0,(len(A)-1)) :
       if(B[i] == B[j]) :
           F1 = open(A[i],'r')
           F2 = open(A[j],'r')
           if(filecmp.cmp(A[i], A[j])) :
               c=1
               if(z==0):
                   l.append(A[i])
                   z=1
               l.append(A[j])
           
       if (B[i] != B[j] and c==1):
           print "Questi file sono uguali di dimensione : ",B[i], "Byte"
           print l
           l=[]
           c=0
           z=0
           print
       j=j+1      
   if(c==1) :
       print "Questi file sono uguali di dimensione : ",B[i]
       print l      
   print

if __name__ == "__main__" :

   main()