Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import glob
- # Funkcije za prirodno sortiranje imena datoteka
- def try_int(s):
- "Convert to integer if possible."
- try: return int(s)
- except: return s
- def natsort_key(s):
- "Used internally to get a tuple by which s is sorted."
- import re
- return map(try_int, re.findall(r'(\d+|\D+)', s))
- def natcmp(a, b):
- "Natural string comparison, case sensitive."
- return cmp(natsort_key(a), natsort_key(b))
- def natcasecmp(a, b):
- "Natural string comparison, ignores case."
- return natcmp(a.lower(), b.lower())
- def natsort(seq, cmp=natcmp):
- "In-place natural string sort."
- seq.sort(cmp)
- def natsorted(seq, cmp=natcmp):
- "Returns a copy of seq, sorted by natural string sort."
- import copy
- temp = copy.copy(seq)
- natsort(temp, cmp)
- return temp
- # Funkcija za usporedbu i preimenovanje datoteka, ujedno glavna funkcija programa
- def provjera():
- ispisNaEkran = 0 # Ako zelis ispis razlika u imenima na ekranu, stavi 1 umjesto 0 (napredak se uvijek ispisuje)
- outFile = open('./provjera.txt', 'w') # Stvaranje i otvaranje datoteke za pohranu rezultata
- ekstenzija=".txt" # Ekstenzija datoteka koje se provjeravaju
- skupDatoteka=glob.glob("*"+ekstenzija) # Dohvati sve datoteke u trenutnom direktoriju s odabranom ekstenzijom
- natsort(skupDatoteka) # Prirodno sortiraj dohvacene datoteke
- totalNum=len(skupDatoteka) # Ukupni broj datoteka
- msg="Ukupno za provjeru: " + str(totalNum) + " datoteka\n" # Poruka
- print(msg) # Ispis na stdout
- outFile.write(msg+"\n") # Ispis u datoteku
- index=0 # Indeks pojedine datoteke u skupu datoteka
- thresh=0.2 # Prag za ispis poruke o napretku
- for datoteka in skupDatoteka: # Petlja - za sve datoteke u skupu datoteka
- if index>0: # Ako datoteka nije prva datoteka
- a=datoteka.split(".") # Odvoji ekstenziju od imena datoteke
- trenutnaDatoteka=a[0].split("_") # Odvoji prvi dio imena datoteke od broja datoteke (drugog dijela)
- b=skupDatoteka[index-1].split(".") # Odvajanje ekstenzije i
- prethodnaDatoteka=b[0].split("_") # dijelova za datoteku prije trenutne
- # Ako prethodna datoteka nema drugog dijela, prvi dijelovi imena su isti, a drugi dio imena trenutne datoteke nije _2
- if ((len(trenutnaDatoteka)>1) and
- (len(prethodnaDatoteka)==1) and
- (trenutnaDatoteka[0]==prethodnaDatoteka[0]) and
- (trenutnaDatoteka[1]!="2")
- ):
- # Ispisi ime datoteke koja nedostaje
- msg="Slijed " + prethodnaDatoteka[0] + " ne zapocinje datotekom " + prethodnaDatoteka[0] + "_2" + ekstenzija #Poruka
- if ispisNaEkran : print(msg) # Ispis na stdout
- outFile.write(msg+"\n") # Ispis u datoteku
- # Ako drugi dijelovi imena datoteka postoje, prvi dijelovi trenutne i prethodne datoteke su jednaki, a drugi dijelovi van slijeda
- if ((len(trenutnaDatoteka)>1) and
- (len(prethodnaDatoteka)>1) and
- (trenutnaDatoteka[0]==prethodnaDatoteka[0]) and
- (trenutnaDatoteka[1]!=str(int(prethodnaDatoteka[1])+1))
- ):
- # Ispisi poruku koje se datoteke razlikuju
- msg="Razlika u slijedu kod datoteke: " + datoteka + " - prethodna datoteka je " + skupDatoteka[index-1] # Poruka
- if ispisNaEkran : print(msg) # Ispis na stdout
- outFile.write(msg+"\n") # Ispis u datoteku
- index+=1 # Indeks se povecava za jedan
- #Ispis napretka svakih 20 posto
- if round(float(index)/float(totalNum),5)>thresh :
- msg="\nProvjereno " + str(index) + " od " + str(totalNum) + " datoteka\n" # Poruka
- print(msg) # Ispis na stdout
- outFile.write(msg+"\n") # Ispis u datoteku
- thresh+=thresh # Novi prag
- msg="\nProvjera gotova\n"
- print(msg) # Ispis na stdout
- outFile.write(msg+"\n") # Ispis u datoteku
- outFile.close() # Zatvaranje i spremanje datoteke s rezultatima
- if __name__ == "__main__": # Ako se modul pokrece samostalno,
- provjera() # funkcija provjera() je glavna funkcija
Advertisement
Add Comment
Please, Sign In to add comment