NamedTemporaryFile: creation de fic de config - Python - Programmation
MarshPosté le 10-04-2011 à 21:52:20
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 :
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 :
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 :
constchar* 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 :
f = tempfile.NamedTemporaryFile(mode='w+t', delete=False)
Marsh Posté le 10-04-2011 à 21:52:20
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++.
Puis c'est ici que j'utilise cette fonction :
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 :
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 :
Merci d'avance pour votre aide