[PYTHON] Script plusieurs fichiers en entré

Fermé
Benj - 19 avril 2007 à 15:11
 Benj - 19 avril 2007 à 16:06
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 :)
A voir également:

2 réponses

indigofox Messages postés 41 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 24 mai 2009 6
19 avril 2007 à 15:52
utilise ceci:

import glob

list_files = glob.glob('*.dat')
2
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