Faire d'un texte une ligne de code

noradan Messages postés 19 Statut Membre -  
heyquem Messages postés 808 Statut Membre -
Bonjour,

existe-t-il un moyen pour faire d'une ligne de texte par exemple
"toto=[[1,2],[4,5]]"

quelque chose qui fasse ce que vous pensez c'est-à-dire
qui assigne à toto la liste [[1,2],[4,5]]

Autrement bien sûr qu'en lisant la chaîne caractère par caractère avec des bordés de tests
et de recherche d'occurence

quelque chose du genre "eval" qui interprète un texte comme un code python (si ce texte est correctement rédigé bien entendu)

(C'est pour stocker des listes dans un fichier et pouvoir en rappeler une avec son nom)

Merci

A voir également:

1 réponse

heyquem Messages postés 808 Statut Membre 131
 
Bonjour


https://docs.python.org/2/reference/simple_stmts.html#the-exec-statement

exec("toto=[[1,2],[4,5]]" )



Mais ce que tu veux faire s'appelle de la sérialisation / désérialisation.
Tu pense bien que tu n'est pas le premier à avoir eu envie de faire ça et que Python dispose d'un module dédié pour ça,
pickle
:

https://docs.python.org/2/library/pickle.html#index-0

from cPickle import dump, load

with open('fifi.pkl','wb') as f:
dump([[1,2],[4,5]],f)

with open('fifi.pkl','rb') as g:
titi = load(g)

print 'titi:',titi

Nota Bene: il faut ouvrir le fichier de pickling en mode binaire, càd avec
'wb'
et
'rb'
comme mode, et non pas seulement
'w'
et
'r'
.

Je crois qu'on peut mettre n'importe quelle extension au fichier de sérialisation, mais il vaut mieux éviter des extensions qui ont déjà un sens comme .rtf , .pdf , .jpg etc, ça ne sert à rien de créer de potentiels problèmes

Je te laisse lire dans la doc la différence entre
pickle
et
cPickle
.
1