#1 Le 16/02/2011, à 21:31
- toitoinebzh
[script] correction fichier .qif fortuneo, credit mutuel, boursorama
Bonjour,
j'ai fait un petit script avec mes faibles connaissances en programmation
il permet de corriger les fichiers .qif du crédit mutuel et fortuneo, boursorama
les fichiers qif permettent d'exploiter les opérations bancaires que l'on fait sur son compte bancaire
ces deux banques ne respectent pas le format standard (j'ai essayé de les contacter la dessus, sans succès pour l'instant)
par conséquent lorsque je tentais d'importer leur fichier dans homebank, ça fonctionnait mal
https://answers.launchpad.net/homebank/+question/143980
voila le script en question (écrit en python)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# correctQif.py
## ##
# script pour corriger les fichiers .qif CMB FORTUNEO #
# nom du fichier à mettre en argument du script #
# python correctQif fichier_a_corriger.qif #
# un fichier sortie.qif est obtenue en sortie #
## ##
import sys
if len(sys.argv) == 2 :
fichier = sys.argv[1]
print "Correction du fichier "+fichier
fichier_entree=open(fichier,'r')
fichier_sortie=open('sortie.qif','w')
ligne=fichier_entree.readlines()
for txt in ligne:
if txt[0]=="P":
txt="M"+txt[1:]
if txt[0]=="T":
txt=txt.replace("+","")
fichier_sortie.write(str(txt))
fichier_entree.close()
fichier_sortie.close()
else:
print "Merci de mettre un seul fichier .qif en argument"
edit 10/06/2012 : mise a jour du script
Dernière modification par toitoinebzh (Le 10/06/2012, à 18:36)
Hors ligne
#2 Le 16/02/2011, à 21:51
- Merle
Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama
Salut ton script m'intéresse parce que je fais aussi mes comptes sur Homebank avec un compte au crédit mutuel comme toi, par contre je ne sais pas trop comment fonctionne un script ... tu pourrais m'expliquer ? (si c'est pas trop long).
Merci.
Hors ligne
#3 Le 17/02/2011, à 18:24
- toitoinebzh
Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama
salut
en faite, ce script modifie légèrement les fichiers .qif que tu peux télécharger sur le site internet du crédit mutuel
1 > lance gedit ou autre logiciel de texte, colle le code que j'ai donné et enregistre en tant que correctQif.py dans ton dossier personnel
2 > récupère un fichier qif (appelons le releve.qif) du credit mutuel et met le dans ton dossier personnel
3 > ouvre un terminal puis tape
python correctQif.py releve.qif
4 > un fichier sortie.qif sera créé
5 > lance homebank, fichier, importer qif, sélectionne le fichier sortie.qif
tes données sont maintenant accessibles, tu peux les associer à un compte que tu as déjà crée
Dernière modification par toitoinebzh (Le 17/02/2011, à 18:28)
Hors ligne
#4 Le 17/02/2011, à 19:03
- Merle
Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama
Merci ça marche nickel.
Hors ligne
#5 Le 16/07/2012, à 18:56
- toitoinebzh
Re : [script] correction fichier .qif fortuneo, credit mutuel, boursorama
salut
mise a jour du programme
cette fois il y a une interface graphique
#!/usr/bin/env python
# -*- coding:Utf-8 -*-
import pygtk
pygtk.require('2.0')
import gtk
import os
class FichierQif:
def __init__(self,chemin):
self.chemin=chemin
return
def corriger(self):
#print "Lecture en cours"
fichier_entree=open(self.chemin,'r')
ligne=fichier_entree.readlines()
self.version_corrigee=[]
#print "Correction en cours"
for txt in ligne:
if txt[0]=="P":
txt="M"+txt[1:]
if txt[0]=="T":
txt=txt.replace("+","")
self.version_corrigee.append(str(txt))
fichier_entree.close()
#print "Correction terminée"
return
def ecrire(self,fichier_sortie):
#print "Ecriture en cours"
fichier_sortie=open(str(fichier_sortie),'w')
for txt in self.version_corrigee:
fichier_sortie.write(str(txt))
fichier_sortie.close()
#print "Ecriture terminée"
return
class Interface :
def __init__(self):
self.filename,self.nom_fichier,self.extension=None,None,None
# fenetre
self.fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.fenetre.set_title("correctQif")
self.fenetre.set_default_size(400,400)
self.fenetre.set_position(gtk.WIN_POS_CENTER)
self.fenetre.connect("destroy", gtk.main_quit)
# label
chaine_haut="<b>Programme pour corriger les fichiers .qif défectueux de\n Boursorama, Fortunéo et du Crédit Mutuel de Bretagne</b>"
self.texte_haut = gtk.Label(chaine_haut) # on crée un label
self.texte_haut.set_use_markup(True)
self.texte_milieu = gtk.Label("En attente de sélection de fichier") # on crée un label
self.texte_bas = gtk.Label("") # on crée un label
# bouton
self.bouton_selection_fichier = gtk.Button('Choisir le fichier')
self.bouton_selection_fichier.set_border_width(10)
self.bouton_selection_fichier.connect("clicked", self.ouvrir_fichier )
self.bouton_correction_fichier = gtk.Button('Corriger le fichier')
self.bouton_correction_fichier.set_border_width(10)
self.bouton_correction_fichier.connect("clicked", self.corriger_fichier )
# grille
self.grille = gtk.VBox(homogeneous=True, spacing=0)
self.grille.pack_start(self.texte_haut)
self.grille.pack_start(self.bouton_selection_fichier)
self.grille.pack_start(self.texte_milieu)
self.grille.pack_start(self.bouton_correction_fichier)
self.grille.pack_start(self.texte_bas)
self.fenetre.add(self.grille)
#
self.fenetre.show_all()
return
def corriger_fichier(self,widget):
if self.filename :
if self.extension.lower()==".qif":
fichier_qif=FichierQif(self.filename)
fichier_qif.corriger()
fichier_sortie=self.nom_fichier+"_correct.qif"
fichier_qif.ecrire(fichier_sortie)
self.texte_bas.set_text("<big><span foreground=\"green\">Correction terminée</span></big>")
self.texte_bas.set_use_markup(True)
self.filename,self.nom_fichier,self.extension=None,None,None
else:
self.texte_bas.set_text("<big><span foreground=\"red\">Mauvais fichier</span></big>")
self.texte_bas.set_use_markup(True)
return
def ouvrir_fichier(self,widget) :
self.texte_bas.set_text("")
dialogue = gtk.FileChooserDialog("Sélection fichier .qif",
None,
gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
dialogue.set_default_response(gtk.RESPONSE_OK)
pathname=os.getcwdu()
dialogue.set_current_folder(pathname)
reponse = dialogue.run()
if reponse == gtk.RESPONSE_OK:
self.filename=dialogue.get_filename()
self.nom_fichier,self.extension=os.path.splitext(self.filename)
print self.filename
self.texte_milieu.set_text(self.filename)
elif reponse == gtk.RESPONSE_CANCEL:
print 'On ferme, pas de fichier sélectionné'
dialogue.destroy()
return
if __name__ == "__main__":
Interface()
gtk.main()
pour utiliser le programme
1 -copier coller le texte dans un fichier que l'on nomme correcQif.py par exemple
2 - clic droit sur le fichier , aller dans les propriétés et rendre le fichier executable
3 - double clique sur le fichier, l'interface graphique se lancera toute seule
Hors ligne