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

Interfaçage autre langage Python Discussion :

NamedTemporaryFile: creation de fic de config


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut NamedTemporaryFile: creation de fic de config
    Bonjour,

    Dans mon programme, j'ai une fonction buildConfFile pour créer un fichier de config. le path vers ce chemin de config sera affecté à une variable d'environnement. Cette variable d'environnement sera lu par mon programme c++.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def buildConfFile():
        f = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
        name = f.name
        f.write("[settings]\ntransport= TCP\n")
        f.close()
        return name
    Puis c'est ici que j'utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    args = buildConfFile()
    os.environ["CONFIGPATH"] = args
    print "$CONFIGPATH=", os.environ["CONFIGPATH"]
    la dernière ligne m'affiche bien ce qu'il faut : /tmp/tmpTP2g4i


    J'utilise une API générée par swig. qui sert d'interface entre mon code c++ et mon petit programme de test en python.

    Maintenant, dans mon code c++, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const char* cslrc = getenv("CONFIGPATH");
    log(DEBUG, "cslrc = %s", cslrc);
    Et celui ci affiche bien le meme contenu qu' os.environ["CONFIGPATH"] cad : /tmp/tmpTP2g4i

    Le problème c'est que mon programme c++ me dit qu'il n'arrive pas à ouvrir le fichier de config ( fopen(configpath, ) retourne un NULL )

    Et quand je regarde si le fichier /tmp/tmpTP2g4i est bien là ... surprise: il n'y est pas dans /tmp/. Il a été effacé quelque part ?, ou bien il n'a jamais existé ?...

    Est ce que quelqu'un aurait une idéee de ce qui se passe ?
    remarquez le False dans ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     f = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
    Merci d'avance pour votre aide

  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,

    Le mode d'ouverture ne serait-il pas 'w+b' au lieu de 'w+t'?

    Tyrtamos
    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
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    De toutes façons, la doc dit:
    Return a file-like object that can be used as a temporary storage area. The file is created using mkstemp(). It will be destroyed as soon as it is closed (including an implicit close when the object is garbage collected). Under Unix, the directory entry for the file is removed immediately after the file is created. Other platforms do not support this; your code should not rely on a temporary file created using this function having or not having a visible name in the file system.
    N'est-il pas normal que le fichier ait disparu après f.close()?
    Utilisez plutôt mkstemp() et n'oubliez pas de le détruire après l'avoir utilisé...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [VB6] Création de composant
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/10/2002, 14h52
  2. [c++ builder] creation de surface sur TPanel
    Par JEG dans le forum DirectX
    Réponses: 7
    Dernier message: 23/09/2002, 22h41
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

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