Le glouton ! [mange et recrache les fichiers qu il trouve dans son repertoire d execution]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 334 fois - Téléchargée 18 fois

Contenu du snippet

ATTENTION - BE CAREFULL
[ne pas lancer dans un répertoire dont vous n'avez pas sauvegarder le contenu au préalable]
[do not run without saving the content of the execution directory]

il fonctionne simplement:
-vous lancer le programme avec argument [with argument] il mange les fichiers[eat]
-vous lancer le programme sans argument [witout argument] et il les recraches.[shit]

attention c'est mon premier glouton, et donc il ne mange pas encore les dossiers,

Information:
n'essayer pas de lui faire manger des fichiers dont la taille unitaire est supérieur à environ 250 Ko(variable suivant la config) sous risque de devoir attendre longtemps...
Il fonctionne bien mieux pour ingérer des petits fichiers mais en grand nombre
(de cette manière il est possible de stoker quelques megaoctets sans trop de temps d'attente).
Il recrache bien plus vite qu'il mange =)
Il est aussi trés gourmand (pour un glouton c'est normal.!) en ressource processeur lors de la conversion des fichiers avant de les ingérer ou de les recracher).

#l'affichage du pourcentage de l'evolution de la conversion fait perde beaucoup de temps de calcul voila pourquoi ils est laisser en commentaires#

Bonne journée!

:-)

Source / Exemple :


##########################################################################
#C'est un glouton,							 #
#Ce fichier ingere tout les autres fichiers qu il trouve dans le 	 #
#repertoire ou il s'execute en les convertissant au prealable en chaine  #
#de type ascii si il est executer avec un argument.		 	 #
#et les recraches a l endroit ou il se situe si il est executer sans	 #
#un argument								 #
#									 #
#[grosse attention !!! SVP penser a le placer dans un dossier 		 #
#vide pour l'essayer la premiere fois, sinon il gobera tout les fichiers.#
#et ne jamais l'executer a la racine !!!]				 #
##########################################################################

import os,sys,string,time,datetime
heresplit="#####"+" DO NOT REMOVE"

def convStoH(string):
 #convertit une chaine de caractere en int-char
 H=""
 cp=0
 for each in string:
  cp=cp+1
  H=H+str(ord(each))+'-'
#  print str(float(float(cp*100)/float(len(string)))) +'% of the file'
 return H
	
def convHtoS(hstring):
#convertit une suite de int-char en chaine de caractere
 tmp=hstring.split('-')
 S=''
 cp=0
 for each in tmp:
  if len(each)>0:
   cp=cp+len(each)+1
   S=S+chr(int(each))
#   print str(float(float(cp*100)/float(len(hstring)))) +'% of the file'
 return S

def eject(name,content):
 sep='/'
 n=convHtoS(name).split(sep) 
 open(n[len(n)-1],'w').write(convHtoS(content))
	
def eating(_file):	
 sep='/'
 currentdir=os.getcwd()
 myfile=open(currentdir+sep+ _file,'r').read()
 name=convStoH(currentdir+sep+_file)
 content=convStoH(myfile)
 name='#N#'+name
 content='#C#'+content
 me=open(currentdir+sep+sys.argv[0],'r').read()
 open(currentdir+sep+sys.argv[0],'w').write(me+name+content)
 #decommenter seulement si vous etes sur d'avoir sauvegarde le repertoire
 #os.system('rm "'+_file+'"')	
	
	
def CheckDir():
 checksplit()
 currentdir=os.getcwd()
 cd=os.listdir(currentdir)
 myname=sys.argv[0]
 for eachfile in cd:
  if str(eachfile).find(myname)==-1:
   eating(eachfile)
			
def CheckMe():
 checksplit()
 me=open(sys.argv[0],'r').read()
 temp=me.split(heresplit)[1]
 if len(temp)>1:
  t= temp.replace('\n','').split('#N#')
  for each in t:
   if len(each)>0 and each.find('#C#')>-1:
    name=each.split('#C#')[0]
    content=each.split('#C#')[1]
    eject(name,content)
  me=open(sys.argv[0],'r').read().split(heresplit)[0]
  open(sys.argv[0],'w').write(me)
 

def checksplit():
 me=open(sys.argv[0],'r').read()
 if me.find(heresplit)==-1:
  myname=sys.argv[0]
  open(sys.argv[0],'w').write(me+heresplit)

def main():
  try:
  	#si il y a un argument
  	arg=sys.argv[1]
  	t1=datetime.datetime.now()
  	CheckDir() ## manger les fichiers
  	TimeEat=str(datetime.datetime.now()-t1) + " to operate the eat."
	print TimeEat  	
  except:
	#si il n'y a pas d argument
	t1=datetime.datetime.now()
	CheckMe() ## recracher les fichiers
  	TimeShit=str(datetime.datetime.now()-t1) + " to operate the shit."
  	print TimeShit
  
main()

Conclusion :


Pas vraiment utile mais un peu rigolo.

A voir également

Ajouter un commentaire Commentaires
Messages postés
45
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 janvier 2011

Lol, je t en prie, j avais pensé pour les sous dossier a zipper des que ce n est pas un fichier puis decouper l archive en morceau. Mais j ai mis ce projet de coté, c'etait juste un trip :)
Bonne journée`
Cdt
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Merci ! Si tu veux étendre le code aux sous-dossiers tu peux utiliser une méthode récursive : tu parcours chaque fichier/dossier à partir d'un répertoire racine, si c'est un fichier tu le gloutonnes et si c'est un dossier tu réappelles la même fonction avec ce dossier en répertoire racine. A terme ça nettoyera tous les sous-dossiers.

Aussi, penses à respecter l'indentation du Python, qui est de 4 ou 8 espaces (1 ou 2 tabulations) normalement (bien que sur la source il se peut que ce soit le serveur qui l'ait formatté ainsi), sinon c'est un bon premier glouton !

Cordialement, Bacterius !
Messages postés
45
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 janvier 2011

Merci, j'en ai pris compte
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Ouais euh bon ... niveau sécurité c'est pas top quand même. Perso j'aurais mis en commentaire la ligne qui supprime les fichiers par défaut en demandant aux lecteurs de décommenter quand ils sont sûrs qu'il n'y a aucun risque. Parti comme ça, tu peux être certain qu'il y a une poignée de personnes qui n'ont absolument pas lu l'avertissement et qui ont peut-être perdu des fichiers (enfin, non, en général on place une source téléchargée dans un répertoire à part, mais bon).

Cordialement, Bacterius !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.