Bonjour,
je cherche à définir un petit formalisme de fichier de configuration
qui me permettra de stocker facilement des informations structurées
(tuples, listes, ...) dans des fichiers textes.
par exemple :
"values = 12 23 (12, 34, 44.5) 45 [23,45.3]" dans le fichier texte me
donne trois choses différentes :
- des valeurs spécifiques 12, 23, 45
- un tuple de 3 valeurs : (12, 34, 44.5)
- un intervalle : [23, 45.3]
Actuellement je connais plusieurs moyens de le faire mais je cherche des
moyens plus simples à mettre en oeuvre.
1/ Utiliser la fonction eval. Le problème est de devoir écrire la
structure en python, ce que je ne veux pas imposer.
2/ Utiliser un parsing à base de split. Difficile à maintenir et à étendre.
3/ Utiliser le module re. Plus simple que les split mais les regexp sont
vite complexes.
4/ Utiliser pyparsing. Je n'ai pas encore pu tester.
Est-ce que vous auriez d'autres pistes à me faire partager ou bien un
retour d'expérience ?
Bonjour, je cherche à définir un petit formalisme de fichier de configuration qui me permettra de stocker facilement des informations structurées (tuples, listes, ...) dans des fichiers textes.
par exemple : "values = 12 23 (12, 34, 44.5) 45 [23,45.3]" dans le fichier texte me donne trois choses différentes : - des valeurs spécifiques 12, 23, 45 - un tuple de 3 valeurs : (12, 34, 44.5) - un intervalle : [23, 45.3]
Actuellement je connais plusieurs moyens de le faire mais je cherche des moyens plus simples à mettre en oeuvre.
1/ Utiliser la fonction eval. Le problème est de devoir écrire la structure en python, ce que je ne veux pas imposer.
2/ Utiliser un parsing à base de split. Difficile à maintenir et à étendre.
3/ Utiliser le module re. Plus simple que les split mais les regexp sont vite complexes.
4/ Utiliser pyparsing. Je n'ai pas encore pu tester.
Est-ce que vous auriez d'autres pistes à me faire partager ou bien un retour d'expérience ?
Merci, Jérôme
Salut,
Tu peux aussi modifier un peu ton fichier de configuration :
values = (12, 23, (12, 34, 44.5), 45, [23, 45.3])
Ensuite, tu n'as qu'à faire évaluer le fichier par python, et tu retrouves un tuple où tu peux retrouver les différents champs comme dans un tableau.
oui, c'est le point 1
"1/ Utiliser la fonction eval"
Paul
Paul Morelle wrote:
Bonjour,
je cherche à définir un petit formalisme de fichier de configuration
qui me permettra de stocker facilement des informations structurées
(tuples, listes, ...) dans des fichiers textes.
par exemple :
"values = 12 23 (12, 34, 44.5) 45 [23,45.3]" dans le fichier texte me
donne trois choses différentes :
- des valeurs spécifiques 12, 23, 45
- un tuple de 3 valeurs : (12, 34, 44.5)
- un intervalle : [23, 45.3]
Actuellement je connais plusieurs moyens de le faire mais je cherche
des moyens plus simples à mettre en oeuvre.
1/ Utiliser la fonction eval. Le problème est de devoir écrire la
structure en python, ce que je ne veux pas imposer.
2/ Utiliser un parsing à base de split. Difficile à maintenir et à
étendre.
3/ Utiliser le module re. Plus simple que les split mais les regexp
sont vite complexes.
4/ Utiliser pyparsing. Je n'ai pas encore pu tester.
Est-ce que vous auriez d'autres pistes à me faire partager ou bien un
retour d'expérience ?
Merci,
Jérôme
Salut,
Tu peux aussi modifier un peu ton fichier de configuration :
values = (12, 23, (12, 34, 44.5), 45, [23, 45.3])
Ensuite, tu n'as qu'à faire évaluer le fichier par python, et tu
retrouves un tuple où tu peux retrouver les différents champs comme dans
un tableau.
Bonjour, je cherche à définir un petit formalisme de fichier de configuration qui me permettra de stocker facilement des informations structurées (tuples, listes, ...) dans des fichiers textes.
par exemple : "values = 12 23 (12, 34, 44.5) 45 [23,45.3]" dans le fichier texte me donne trois choses différentes : - des valeurs spécifiques 12, 23, 45 - un tuple de 3 valeurs : (12, 34, 44.5) - un intervalle : [23, 45.3]
Actuellement je connais plusieurs moyens de le faire mais je cherche des moyens plus simples à mettre en oeuvre.
1/ Utiliser la fonction eval. Le problème est de devoir écrire la structure en python, ce que je ne veux pas imposer.
2/ Utiliser un parsing à base de split. Difficile à maintenir et à étendre.
3/ Utiliser le module re. Plus simple que les split mais les regexp sont vite complexes.
4/ Utiliser pyparsing. Je n'ai pas encore pu tester.
Est-ce que vous auriez d'autres pistes à me faire partager ou bien un retour d'expérience ?
Merci, Jérôme
Salut,
Tu peux aussi modifier un peu ton fichier de configuration :
values = (12, 23, (12, 34, 44.5), 45, [23, 45.3])
Ensuite, tu n'as qu'à faire évaluer le fichier par python, et tu retrouves un tuple où tu peux retrouver les différents champs comme dans un tableau.
oui, c'est le point 1
"1/ Utiliser la fonction eval"
Paul
Amaury Forgeot d'Arc
La solution standard en Python pour les fichiers de configuration est d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des méthodes plus complexes car les valeurs ne peuvent être que des chaines de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de caractères est entre guillemets, un entier ne contient que des chiffres, une liste contient des virgules), soit c'est à l'interprétation des données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second cas il est possible d'utiliser le module ConfigParser et ses méthodes getint(), getfloat().
-- Amaury Forgeot d'Arc
La solution standard en Python pour les fichiers de configuration est
d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des
méthodes plus complexes car les valeurs ne peuvent être que des chaines
de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de
caractères est entre guillemets, un entier ne contient que des chiffres,
une liste contient des virgules), soit c'est à l'interprétation des
données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second
cas il est possible d'utiliser le module ConfigParser et ses méthodes
getint(), getfloat().
La solution standard en Python pour les fichiers de configuration est d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des méthodes plus complexes car les valeurs ne peuvent être que des chaines de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de caractères est entre guillemets, un entier ne contient que des chiffres, une liste contient des virgules), soit c'est à l'interprétation des données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second cas il est possible d'utiliser le module ConfigParser et ses méthodes getint(), getfloat().
Ah, ça a mis du temps, mais c'est arrivé :-) Il fallait bien qu'il y en ait un qui s'y colle... :p
Michel Claveau
Salut !
5/ Utiliser XML
Oui, bien sûr.
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur de texte simple, pour modifier/étendre le fichier en question (il faut au moins un éditeur capable de lire de l'UTF-8).
Et puis, côté syntaxe, on va éviter celle de Python, mais les contraintes de XML sont conséquentes ; sans oublier la perte de lisibilité.
Dans un genre proche, il me semble que certains ont proposé YAML...
-- @-salutations
Michel Claveau
Salut !
5/ Utiliser XML
Oui, bien sûr.
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur
de texte simple, pour modifier/étendre le fichier en question (il faut
au moins un éditeur capable de lire de l'UTF-8).
Et puis, côté syntaxe, on va éviter celle de Python, mais les
contraintes de XML sont conséquentes ; sans oublier la perte de
lisibilité.
Dans un genre proche, il me semble que certains ont proposé YAML...
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur de texte simple, pour modifier/étendre le fichier en question (il faut au moins un éditeur capable de lire de l'UTF-8).
Et puis, côté syntaxe, on va éviter celle de Python, mais les contraintes de XML sont conséquentes ; sans oublier la perte de lisibilité.
Dans un genre proche, il me semble que certains ont proposé YAML...
-- @-salutations
Michel Claveau
luc
Michel Claveau wrote:
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur de texte simple, pour modifier/étendre le fichier en question (il faut au moins un éditeur capable de lire de l'UTF-8).
Depuis quand un document XML ne peut il être encodé qu'en UTF-8 ?
-- Luc Heinrich
Michel Claveau <mcPas.De.Spam@mclaveauPas.De.Spam.com> wrote:
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur
de texte simple, pour modifier/étendre le fichier en question (il faut
au moins un éditeur capable de lire de l'UTF-8).
Depuis quand un document XML ne peut il être encodé qu'en UTF-8 ?
Mais alors, l'utilisateur ne pourra plus (toujours) utiliser un éditeur de texte simple, pour modifier/étendre le fichier en question (il faut au moins un éditeur capable de lire de l'UTF-8).
Depuis quand un document XML ne peut il être encodé qu'en UTF-8 ?
-- Luc Heinrich
Jerome
Amaury Forgeot d'Arc wrote:
La solution standard en Python pour les fichiers de configuration est d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des méthodes plus complexes car les valeurs ne peuvent être que des chaines de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de caractères est entre guillemets, un entier ne contient que des chiffres, une liste contient des virgules), soit c'est à l'interprétation des données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second cas il est possible d'utiliser le module ConfigParser et ses méthodes getint(), getfloat().
oui mais une chaine de caractère peut respecter une grammaire et donc posséder une sémantique et une structure plus forte, par exemple un script python :)
Amaury Forgeot d'Arc wrote:
La solution standard en Python pour les fichiers de configuration est
d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des
méthodes plus complexes car les valeurs ne peuvent être que des
chaines de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de
caractères est entre guillemets, un entier ne contient que des chiffres,
une liste contient des virgules), soit c'est à l'interprétation des
données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second
cas il est possible d'utiliser le module ConfigParser et ses méthodes
getint(), getfloat().
oui mais une chaine de caractère peut respecter une grammaire et donc
posséder une sémantique et une structure plus forte, par exemple un
script python :)
La solution standard en Python pour les fichiers de configuration est d'utiliser le module ConfigParser
Oui, je l'utilise déjà. Et c'est pour cela que je dois utiliser des méthodes plus complexes car les valeurs ne peuvent être que des chaines de caractères.
Mais dans un fichier texte, que peut-on mettre d'autre ?
Soit le type est indiqué par la valeur même (ex: une chaine de caractères est entre guillemets, un entier ne contient que des chiffres, une liste contient des virgules), soit c'est à l'interprétation des données qu'on peut faire la conversion.
Dans le premier cas, on se rapproche d'un script python, dans le second cas il est possible d'utiliser le module ConfigParser et ses méthodes getint(), getfloat().
oui mais une chaine de caractère peut respecter une grammaire et donc posséder une sémantique et une structure plus forte, par exemple un script python :)
Michel Claveau
Bonsoir !
Je me suis mal exprimé. Désolé.
Je voulais dire qu'un éditeur de texte simple, capable de lire seulement de l'ASCII ou de l'ANSI, risque d'avoir des problèmes avec des fichiers XML.
Et, quand je regarde les éditeurs de texte qui sont dans ma bécane, plusieurs sont capables de traiter de l'UTF-8, mais pas de l'UTF-16, ou de l'UTF-32, ou même de l'UTF-7.
Donc, l'UTF-8 me semble un bon compromis.
Mais, cela ne change rien sur le peu de lisibilité de XML (comparé à un source Python ou à du YAML).
-- @-salutations
Michel Claveau
Bonsoir !
Je me suis mal exprimé. Désolé.
Je voulais dire qu'un éditeur de texte simple, capable de lire
seulement de l'ASCII ou de l'ANSI, risque d'avoir des problèmes avec
des fichiers XML.
Et, quand je regarde les éditeurs de texte qui sont dans ma bécane,
plusieurs sont capables de traiter de l'UTF-8, mais pas de l'UTF-16, ou
de l'UTF-32, ou même de l'UTF-7.
Donc, l'UTF-8 me semble un bon compromis.
Mais, cela ne change rien sur le peu de lisibilité de XML (comparé à un
source Python ou à du YAML).
Je voulais dire qu'un éditeur de texte simple, capable de lire seulement de l'ASCII ou de l'ANSI, risque d'avoir des problèmes avec des fichiers XML.
Et, quand je regarde les éditeurs de texte qui sont dans ma bécane, plusieurs sont capables de traiter de l'UTF-8, mais pas de l'UTF-16, ou de l'UTF-32, ou même de l'UTF-7.
Donc, l'UTF-8 me semble un bon compromis.
Mais, cela ne change rien sur le peu de lisibilité de XML (comparé à un source Python ou à du YAML).