def add_files_in_dir(nom_fuz, noms, start_dir, printer=0): #start_dir numero de ligne ou commence le dossier fusioned = file(nom_fuz, "rb") copy = file(get_path(nom_fuz) + "copy", "wb") ligne = 0 if printer: print "copie du debut du fichier de fusion" for i in range(start_dir - 3): copy.write(fusioned.readline()) string = fusioned.readline()[:-1] copy.write( int_len(int_base(base_int(string, 254) + len(noms), 254), len(string)) + "\n") for nom in noms: if printer: print nom, "\ncalcule de la taille du fichier" ligne = 0 for i in file(nom, "rb").read_lines(): ligne += 1 copy.write(get_name(nom) + "\n" + int_base(ligne, 254) + "\n") if printer: print "copie du fichier" for i in file(nom, "rb").read_lines(): copy.write(i) copy.write("\n") if printer: print "copie de la fin du fichier de fusion" for i in fusioned.read_lines(): copy.write(i) copy.close() remove(nom_fuz) rename(get_path(nom_fuz) + "copy", nom_fuz) if printer: print "creation de l'index du fichier de fusion" create_index_dir(nom_fuz)
def conv_time(valeur,unite="s",conv="m"): """temps en unite= "s", "m" ou "h"---> temps en conv = "s", "m" ou "h" """ if unite == "h": valeur = valeur * 3600 elif unite == "m": valeur = valeur * 60 if conv == "s": return valeur if conv == "h": h = valeur / 3600 m = valeur / 60 % 60 else: m = valeur / 60 s = valeur % 60 if conv == "h": return int_len(h)+":"+int_len(m)+":"+int_len(s) else: return int_len(m)+":"+int_len(s)
def create_index_dir(nom, nom_dir="",start=-1, stop=-1): if nom_dir: name = nom.replace("\\","/")+":"+nom_dir.replace("\\","/").replace("/",":")+".zid" fichier = file(name,"wb") else: fichier = file(".".join(nom.split(".")[:-1])+".zid","wb") fusioned = file(nom,"rb") if stop > -1 < start: fusioned.read(1) dirs, nbr_dir, len_nbr = get_arborescence(fusioned, start, stop) fichier.write("1"+int_base(len_nbr)+"\n") for i,files in enumerate(files_in_dir(fusioned,(dirs, nbr_dir, len_nbr), start, stop)): c_dir, files = files nbr_files = len(files) if nbr_files: fichier.write(int_len(int_base(dirs.index(c_dir)),len_nbr)+int_base(nbr_files,254)+"\n") x = 0 for f, start, stop in files: fichier.write(f+"\n"+int_base(start,254)+"\n"+int_base(stop,254)+"\n")
def create_index_dir(nom, nom_dir="", start=-1, stop=-1): if nom_dir: name = nom.replace("\\", "/") + ":" + nom_dir.replace( "\\", "/").replace("/", ":") + ".zid" fichier = file(name, "wb") else: fichier = file(".".join(nom.split(".")[:-1]) + ".zid", "wb") fusioned = file(nom, "rb") if stop > -1 < start: fusioned.read(1) dirs, nbr_dir, len_nbr = get_arborescence(fusioned, start, stop) fichier.write("1" + int_base(len_nbr) + "\n") for i, files in enumerate( files_in_dir(fusioned, (dirs, nbr_dir, len_nbr), start, stop)): c_dir, files = files nbr_files = len(files) if nbr_files: fichier.write( int_len(int_base(dirs.index(c_dir)), len_nbr) + int_base(nbr_files, 254) + "\n") x = 0 for f, start, stop in files: fichier.write(f + "\n" + int_base(start, 254) + "\n" + int_base(stop, 254) + "\n")
def add_files_in_dir(nom_fuz, noms, start_dir, printer=0): #start_dir numero de ligne ou commence le dossier fusioned = file(nom_fuz, "rb") copy = file(get_path(nom_fuz)+"copy", "wb") ligne = 0 if printer: print "copie du debut du fichier de fusion" for i in range(start_dir-3): copy.write(fusioned.readline()) string = fusioned.readline()[:-1] copy.write(int_len(int_base(base_int(string, 254) + len(noms), 254), len(string))+"\n") for nom in noms: if printer: print nom,"\ncalcule de la taille du fichier" ligne = 0 for i in file(nom, "rb").read_lines(): ligne += 1 copy.write(get_name(nom)+"\n"+int_base(ligne,254)+"\n") if printer: print "copie du fichier" for i in file(nom, "rb").read_lines(): copy.write(i) copy.write("\n") if printer: print "copie de la fin du fichier de fusion" for i in fusioned.read_lines(): copy.write(i) copy.close() remove(nom_fuz) rename(get_path(nom_fuz)+"copy", nom_fuz) if printer: print "creation de l'index du fichier de fusion" create_index_dir(nom_fuz)
def fusion_dirfile(dirs, files=[], name=""): if dirs: if not name: name = dirs[0] if name[-1] == "/": name = name[:-1] len_ext = len(get_ext(name)) liste = [encode(get_name(name))] paths = [encode(name)] if get_ext(name) != "fuz": name += ".fuz" for dossier in dirs: new_paths = get_paths(dossier) lim = (len("/".join(new_paths[0][:-1].split("/")[:-1])) + 1) * int( bool(new_paths[0][:-1].count("/"))) for i in new_paths: liste.append(encode(liste[0] + "/" + i[lim:-1])) paths.append(i[:-1]) nbr_dir = int_base(len(liste)) len_nbr = len(nbr_dir) i = 0 while i < len(paths): index = len("/".join(liste[i].split("/")[:-1])) + 1 if not i: index -= 1 dossier = encode(liste[i].split("/")[-1]) index_dossier = len(dossier) path = liste[i][:index + index_dossier] for ind, p in enumerate(liste): if p[:index + index_dossier] == path: liste[ind] = p[ : index] +\ p[index : index+index_dossier].replace(dossier, int_len(int_base(i), len_nbr)) +\ p[index+index_dossier : ] i += 1 liste[0] = encode(liste[0][-len_nbr * 2 - 1:-len_nbr - 1] + (get_name(paths[0]) + ".")[:-len_ext * bool(len_ext) - 1]) for i, e in enumerate(liste[1:]): liste[i + 1] = e[-len_nbr * 2 - 1:-len_nbr - 1] + encode( get_name(paths[i + 1])) fusioned = file(name, "wb") fusioned.write("1" + int_base(len_nbr) + int_len(nbr_dir, len_nbr)) for i in liste: fusioned.write(i + "\n") for i, e in enumerate(liste): if i: fichiers = get_dirfile(paths[i])[1] if fichiers: fusioned.write(int_len(int_base(i), len_nbr)) fusioned.write(int_base(len(fichiers)) + "\n") print "\n" * 2, paths[i] print fusion_files(fichiers, paths[i], fusioned) else: fusioned.write("0" * len_nbr) if files: fusioned.write(int_base(len(files), 254) + "\n") fusion_files(files, "", fusioned) else: fusioned.write("0\n") if files == None: fusioned.write(int_len(int_base(len(liste)), len_nbr)) fusioned.write(int_base(len(files), 254) + "\n") fusion_files(files, "", fusioned) fusioned.close() return name else: return fusion_files(files, file_fuz=name)
def get_time(seconds=""): if type(seconds) != type(0.): temp = localtime() else: temp = localtime(seconds) return "%s:%s:%s"%(int_len(temp[3]), int_len(temp[4]), int_len(temp[5]))
def fusion_dirfile(dirs, files=[], name=""): if dirs: if not name: name = dirs[0] if name[-1] == "/": name = name[ : -1] len_ext = len(get_ext(name)) liste = [encode(get_name(name))] paths = [encode(name)] if get_ext(name) != "fuz": name += ".fuz" for dossier in dirs: new_paths = get_paths(dossier) lim = (len("/".join(new_paths[0][:-1].split("/")[:-1]))+1)*int(bool(new_paths[0][:-1].count("/"))) for i in new_paths : liste.append(encode(liste[0] + "/" + i[lim:-1])) paths.append(i[:-1]) nbr_dir = int_base(len(liste)) len_nbr = len(nbr_dir) i=0 while i < len(paths): index = len("/".join(liste[i].split("/")[:-1]))+1 if not i : index -= 1 dossier = encode(liste[i].split("/")[-1]) index_dossier = len(dossier) path = liste[i][:index+index_dossier] for ind, p in enumerate(liste) : if p[ : index+index_dossier] == path: liste[ind] = p[ : index] +\ p[index : index+index_dossier].replace(dossier, int_len(int_base(i), len_nbr)) +\ p[index+index_dossier : ] i+=1 liste[0] = encode(liste[0][-len_nbr*2-1:-len_nbr-1]+(get_name(paths[0])+".")[ : -len_ext *bool(len_ext)-1]) for i,e in enumerate(liste[1 : ]): liste[i+1] = e[-len_nbr*2-1:-len_nbr-1]+encode(get_name(paths[i+1])) fusioned = file(name,"wb") fusioned.write("1"+int_base(len_nbr)+int_len(nbr_dir, len_nbr)) for i in liste : fusioned.write(i+"\n") for i, e in enumerate(liste): if i: fichiers = get_dirfile(paths[i])[1] if fichiers: fusioned.write(int_len(int_base(i),len_nbr)) fusioned.write(int_base(len(fichiers))+"\n") print "\n"*2,paths[i] print fusion_files(fichiers, paths[i], fusioned) else: fusioned.write("0"*len_nbr) if files: fusioned.write(int_base(len(files), 254)+"\n") fusion_files(files, "", fusioned) else: fusioned.write("0\n") if files == None: fusioned.write(int_len(int_base(len(liste)),len_nbr)) fusioned.write(int_base(len(files), 254)+"\n") fusion_files(files, "", fusioned) fusioned.close() return name else: return fusion_files(files,file_fuz=name)