[PYTHON] Script plusieurs fichiers en entré

Benj -  
 Benj -
Bonjour, j'ai fait un très petit programme, il permet de traiter des fichiers, du moins un fichier. Je voudrais qu'il travail sur tous les fichiers du dossier portant l'extension .DAT, et qu'il ecrive la sortie en reprenant le nom de fichier en entré et en rajoutant l'extension .sql par exemple :) code source :

#!/user/bin/python

#ouverture des fichiers
fichier = open("benj.txt","r") #fichier d'entrée
fichierout = open("pythoncarox.txt","w") #fichier de sortie
lignedeformat=fichier.readline() #recupération de la premiere ligne
lignedeformat2=lignedeformat.split(',') #transformation en list, chaque champ étant séparé par une virgule
i=0 #compteur
debutchamp=1 #dans la premiere ligne, le numero de debut de champ est indiqué au 2eme caractere
finchamp=2 #le numero de fin au 3eme caractere
listindex = [] #liste pour stocker les debuts et fin de chaques champs
while i < 46: #il y a 46 champs
	finindex=int(lignedeformat2[finchamp]) 
	debutindex=int(lignedeformat2[debutchamp])-1
	listindex.append(debutindex)
	listindex.append(finindex)
	debutchamp=debutchamp+4 #le numero est indiqué 4 champs plus loin
	finchamp=finchamp+4
	i=i+1
for ligne in fichier: #pour les lignes restantes
	i=0
	u=0  #u permet selectioner dans la liste la paire d'indice definissant le debut et la fin
	while i < 46:#pour les 46 champs des lignes
		fichierout.write(",")#on precede chaque champs d'une virgule
		fichierout.write(str(ligne[listindex[u]:listindex[u+1]]))#on ecrit la valeur d'un champ
		u=u+2
		i=i+1
	fichierout.write("\n") #saute de ligne a chaque ligne traité
fichier.close()
fichierout.close()


Je suis a votre disposition pour des questions ou remarques ou applaudissements,
Cordialement benj :)
Configuration: Windows 2000
Internet Explorer 6.0

2 réponses

  1. indigofox Messages postés 42 Statut Membre 6
     
    utilise ceci:

    import glob

    list_files = glob.glob('*.dat')
    2
  2. Benj
     
    Exact, je te remerci, ca marche :)

    Script bash 20min
    Python 1sec

    code au cas ou ca peut servir :
    #!/user/bin/python
    #-*- coding : utf-8 -*-
    import os, sys, glob
    
    for filename in glob.glob('*.DAT'):
    	#ouverture des fichiers
    	fichier = open(filename,"r") #fichier d'entree
    	resultfilename = os.path.splitext(filename)[0]+'.sql'
    	fichierout = open(resultfilename,"w") #fichier de sortie
    	lignedeformat=fichier.readline() #recuperation de la premiere ligne
    	lignedeformat2=lignedeformat.split(',') #transformation en list, chaque champ etant separe par une virgule
    	i=0 #compteur
    	debutchamp=1 #dans la premiere ligne, le numero de debut de champ est indique au 2eme caractere
    	finchamp=2 #le numero de fin au 3eme caractere
    	listindex = [] #liste pour stocker les debuts et fin de chaques champs
    	while i < 46: #il y a 46 champs
    		finindex=int(lignedeformat2[finchamp]) 
    		debutindex=int(lignedeformat2[debutchamp])-1
    		listindex.append(debutindex)
    		listindex.append(finindex)
    		debutchamp=debutchamp+4 #le numero est indique 4 champs plus loin
    		finchamp=finchamp+4
    		i=i+1
    	for ligne in fichier: #pour les lignes restantes
    		i=0
    		u=0  #u permet selectioner dans la liste la paire d'indice definissant le debut et la fin
    		while i < 46:#pour les 46 champs des lignes
    			fichierout.write(",")#on precede chaque champs d'une virgule
    			fichierout.write(str(ligne[listindex[u]:listindex[u+1]]))#on ecrit la valeur d'un champ
    			u=u+2
    			i=i+1
    		fichierout.write("\n") #saute de ligne a chaque ligne traite
    	fichier.close()
    	fichierout.close()
    
    2