IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Configparser - ok pour lire mais pour ecrire ?


Sujet :

Python

  1. #1
    Membre du Club

    Inscrit en
    Septembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 55
    Points : 56
    Points
    56
    Par défaut Configparser - ok pour lire mais pour ecrire ?
    Bonsoir,

    Une petite question concernant le module configparser, j'ai un fichier de config que je dois lire, ca j'y arrive très bien, par contre, je dois y modifier une valeur et la sauvegarder.
    Si j'ai bien compris ce module ne fonctionne pas de la même façon que le module "inifiles" sous delphi, il ne garde pas en mémoire le fichier après un config.read() par exemple, je ne peux pas simplement modifier une clef et le réécrire avec un ".write()"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #recupe configuration
    try:
    	config = configparser.SafeConfigParser()
    	config1 = configparser.SafeConfigParser()
    	config1.read('gomails.cfg')
    except:
    	messagebox.showerror("Attention", "Arret programme fichier gomails.cfg introuvable")
    	sys.exit()
     
    try:
    	repertoire = config1['Fichier']['chemin']
    	adresse_serveur = config1['Serveur']['SAdresse']
    	port = config1['Serveur']['port']
    	Tmax = config1['Serveur']['taillemax']
    	user = config1['Emetteur']['EAdresse']
    	name = config1['Style']['Entete']
    except:
    	messagebox.showerror("Attention", "Arret programme fichier gomails.cfg mal formate ou introuvable")
    	sys.exit()
    Il faut donc réécrire toutes les valeurs avant de le sauvegarder, soit, dans ma première version j'ai essayé de réécrire directement sur "config", mais lors de l'execution, python me disait que la section "Style" était déjà existante, bon allons, je me dis, je créé un deuxième module vierge (config1) dans lequel je vais créer mes sections et y recopier mes valeurs avant d'enregistrer le fichier, mais j'ai des erreurs comme quoi la variable n'est pas un string.
    J'essaye donc de les convertir au moyen de "srt()" mais ca ne fonctionne pas non plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            config.add_section('Fichier')
            config.add_section('Serveur')
            config.add_section('Style')
            config.add_section('Emetteur')
            config.set('Style', 'test', 'Tesdfsghsfghsfghjsfghjsfgjsfjsghjs')
            config.set('Fichier', 'chemin', str(repertoire))
            config.set('Serveur', 'SAdresse', str(adresse_serveur))
            config.set('Serveur', 'port', str(port))
            config.set('Serveur', 'taillemax', str(Tmax))
            config.set('Emetteur', 'EAdresse', str(user))
            config.set('Style', 'Entete', str(name))
            with open('gomails.cfg', 'wb') as conf_file:
                config.write(conf_file)
    Ou est ce que ca cloche, dans ma déclaration des variables, si je prend un item d'un tableau normalement ca me le ressort pas en un string d'office ?

    Merci
    David
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Comme le nom du module est écrit en minuscule, c'est du Python 3.x.

    On peut très simplement:
    - lire le fichier avec read
    - changer une valeur en utilisant la syntaxe dictionnaire
    - écrire le fichier avec write

    Mais pour l'écriture, il faut ouvrir le fichier en mode texte 'w' et non binaire 'wb' comme mentionné dans la doc.

    De plus la classe SafeConfigParser n'existe plus dans Python 3.2. Le nom est conservé provisoirement, mais sera supprimé dans les versions suivantes. Il faut utiliser simplement ConfigParser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # Python 3.x
    import configparser
     
    fcfg = 'config.ini'
    cfg = configparser.ConfigParser()
     
    # lecture du fichier
    cfg.read(fcfg)
     
    # lecture d'une valeur 
    v = cfg['Section1']['cle13']
     
    # modification de cette valeur
    cfg['Section1']['cle13'] = v + '_modif'
     
    # écriture du fichier modifié
    with open(fcfg,'w') as f:
        cfg.write(f)
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Membre du Club

    Inscrit en
    Septembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 55
    Points : 56
    Points
    56
    Par défaut
    Ok je viens de tester effectivement ca fonctionne du tonnerre.

    Merci
    David

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2010, 05h26
  2. curl pour lire des addresses mais pourquoi
    Par speed034 dans le forum Langage
    Réponses: 1
    Dernier message: 04/06/2009, 12h20
  3. Recherche fonction pour lire/ecrire fichier ISO
    Par T-B dans le forum Langage
    Réponses: 2
    Dernier message: 21/01/2008, 14h47
  4. Probleme pour lire et ecrire dans un meme flux
    Par kururin dans le forum C#
    Réponses: 1
    Dernier message: 18/05/2007, 18h50
  5. Réponses: 5
    Dernier message: 27/05/2006, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo