Pour des raison didactiques, je me suis lancé dans la traduction en
python de mes scripts shell. Du moins pour ceux qui pouvaient se
transformer ainsi, sans heurts.
Parmis eux, un script qui consiste à ajouter une section de VHost à
apache.
Pour faire court, une section Vhost apache est un morceau de texte
ressemblant à ceci:
En vrai sur mon apache cette section fait environ 15 lignes mais tous les
Vhosts ont la même tronche.
Le cript chell actuel, s'invoque comme ceci:
$ addvhost.sh toto.fr
Il s'occupe avec un coup de awk à isoler le "toto" du "fr" pour former la
chaîne /home/toto et puis le reste va tout seul. Ce n'est que mise bout
à bout de choses simples.
J'ai donc un modèle (template?) de Vhost, qui rapporté à notre exmple
serait:
Et le scrip remplaçait les mot en majuscules par ce qu'il faut.
Maintenant j'en viens aux questions.
Vaut-il mieux que je conserve le modèle en dur dans le même fichier que
le script? dans un fichier séparé? Dans la mesure ou ce script ne sera
utilisé que quand on ajoute un Vhost, c'est à dire une fois par semaine
tout au plus.
J'ai été surpris que dans python 2.4, replace(), du module strig est
dans la catégorie des fonctions dépréciées. Mais il n'est indiquée
nulle part dans le chapitre la fonction qui est censée la remplacer.
Laquelle est-elle s'il vous plait?
Merci.
--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/
Pour des raison didactiques, je me suis lancé dans la traduction en python de mes scripts shell. Du moins pour ceux qui pouvaient se transformer ainsi, sans heurts.
Parmis eux, un script qui consiste à ajouter une section de VHost à apache. Pour faire court, une section Vhost apache est un morceau de texte ressemblant à ceci:
En vrai sur mon apache cette section fait environ 15 lignes mais tous les Vhosts ont la même tronche.
Le cript chell actuel, s'invoque comme ceci: $ addvhost.sh toto.fr
Il s'occupe avec un coup de awk à isoler le "toto" du "fr" pour former la chaîne /home/toto et puis le reste va tout seul. Ce n'est que mise bout à bout de choses simples.
J'ai donc un modèle (template?) de Vhost, qui rapporté à notre exmple serait:
Et le scrip remplaçait les mot en majuscules par ce qu'il faut. Maintenant j'en viens aux questions.
Vaut-il mieux que je conserve le modèle en dur dans le même fichier que le script? dans un fichier séparé? Dans la mesure ou ce script ne sera utilisé que quand on ajoute un Vhost, c'est à dire une fois par semaine tout au plus.
C'est kif kif pour le cas présent... Par contre comment feras-tu si tu veux par exemple changer une option dans un vhost ? Pour ma part je stocke toutes mes infos dans une base de données et j'ai un script qui génère les vhosts à partir de la.
ps: si ça t'intéresse je fait aussi la même chose pour toute la clique (proftpd, courier-imap-pop, exim, webalizer, bind, mysql, postgresql, spambayes), c'était parti d'un projet collectif mais je me retrouve tt seul dessus. Ca pourrait le redevenir.
-- William Dodé - http://flibuste.net
On 12-09-2005, R12y wrote:
Bonjour,
Pour des raison didactiques, je me suis lancé dans la traduction en
python de mes scripts shell. Du moins pour ceux qui pouvaient se
transformer ainsi, sans heurts.
Parmis eux, un script qui consiste à ajouter une section de VHost à
apache.
Pour faire court, une section Vhost apache est un morceau de texte
ressemblant à ceci:
En vrai sur mon apache cette section fait environ 15 lignes mais tous les
Vhosts ont la même tronche.
Le cript chell actuel, s'invoque comme ceci:
$ addvhost.sh toto.fr
Il s'occupe avec un coup de awk à isoler le "toto" du "fr" pour former la
chaîne /home/toto et puis le reste va tout seul. Ce n'est que mise bout
à bout de choses simples.
J'ai donc un modèle (template?) de Vhost, qui rapporté à notre exmple
serait:
Et le scrip remplaçait les mot en majuscules par ce qu'il faut.
Maintenant j'en viens aux questions.
Vaut-il mieux que je conserve le modèle en dur dans le même fichier que
le script? dans un fichier séparé? Dans la mesure ou ce script ne sera
utilisé que quand on ajoute un Vhost, c'est à dire une fois par semaine
tout au plus.
C'est kif kif pour le cas présent...
Par contre comment feras-tu si tu veux par exemple changer une option
dans un vhost ? Pour ma part je stocke toutes mes infos dans une base de
données et j'ai un script qui génère les vhosts à partir de la.
ps: si ça t'intéresse je fait aussi la même chose pour toute la clique
(proftpd, courier-imap-pop, exim, webalizer, bind, mysql, postgresql,
spambayes), c'était parti d'un projet collectif mais je me retrouve tt
seul dessus. Ca pourrait le redevenir.
Pour des raison didactiques, je me suis lancé dans la traduction en python de mes scripts shell. Du moins pour ceux qui pouvaient se transformer ainsi, sans heurts.
Parmis eux, un script qui consiste à ajouter une section de VHost à apache. Pour faire court, une section Vhost apache est un morceau de texte ressemblant à ceci:
En vrai sur mon apache cette section fait environ 15 lignes mais tous les Vhosts ont la même tronche.
Le cript chell actuel, s'invoque comme ceci: $ addvhost.sh toto.fr
Il s'occupe avec un coup de awk à isoler le "toto" du "fr" pour former la chaîne /home/toto et puis le reste va tout seul. Ce n'est que mise bout à bout de choses simples.
J'ai donc un modèle (template?) de Vhost, qui rapporté à notre exmple serait:
Et le scrip remplaçait les mot en majuscules par ce qu'il faut. Maintenant j'en viens aux questions.
Vaut-il mieux que je conserve le modèle en dur dans le même fichier que le script? dans un fichier séparé? Dans la mesure ou ce script ne sera utilisé que quand on ajoute un Vhost, c'est à dire une fois par semaine tout au plus.
C'est kif kif pour le cas présent... Par contre comment feras-tu si tu veux par exemple changer une option dans un vhost ? Pour ma part je stocke toutes mes infos dans une base de données et j'ai un script qui génère les vhosts à partir de la.
ps: si ça t'intéresse je fait aussi la même chose pour toute la clique (proftpd, courier-imap-pop, exim, webalizer, bind, mysql, postgresql, spambayes), c'était parti d'un projet collectif mais je me retrouve tt seul dessus. Ca pourrait le redevenir.
-- William Dodé - http://flibuste.net
Christophe
J'ai été surpris que dans python 2.4, replace(), du module strig est dans la catégorie des fonctions dépréciées. Mais il n'est indiquée nulle part dans le chapitre la fonction qui est censée la remplacer. Laquelle est-elle s'il vous plait?
En fait, c'est le module string qui se deprecie car ses fonctionalitées sont portées en tant que fonctions membres des chaines elles mêmes. Donc ton string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
J'ai été surpris que dans python 2.4, replace(), du module strig est
dans la catégorie des fonctions dépréciées. Mais il n'est indiquée
nulle part dans le chapitre la fonction qui est censée la remplacer.
Laquelle est-elle s'il vous plait?
En fait, c'est le module string qui se deprecie car ses fonctionalitées
sont portées en tant que fonctions membres des chaines elles mêmes. Donc
ton string.replace("chaine","old","new") deviens donc
"chaine".replace("old","new")
J'ai été surpris que dans python 2.4, replace(), du module strig est dans la catégorie des fonctions dépréciées. Mais il n'est indiquée nulle part dans le chapitre la fonction qui est censée la remplacer. Laquelle est-elle s'il vous plait?
En fait, c'est le module string qui se deprecie car ses fonctionalitées sont portées en tant que fonctions membres des chaines elles mêmes. Donc ton string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
Damien Wyart
Salut,
* R12y in fr.comp.lang.python:
Dans quelle section de la doc se trouvent toutes ces fonctions membres de la chaine?
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
Merci. Dans quelle section de la doc se trouvent toutes ces fonctions membres de la chaine?
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe de la classe String et on rajoute la fonction en question?
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
Laurent Pointal
R12y wrote:
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
Merci. Dans quelle section de la doc se trouvent toutes ces fonctions membres de la chaine?
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe de la classe String et on rajoute la fonction en question?
Tu crées un module, et tu places ta fonction dedans - simple, lisible, efficace.
Tu peux bien sûr créer une sous-classe de str... mais je ne suis pas sûr que tous les modules apprécient (ie. il faut vraiment avoir une bonne raison pour faire une sour-classe de str). De plus, ne pas oublier qu'il existe aussi les chaînes unicode (dont tu risques d'avoir besoin si tu manipules des chaînes accentuées).
class MyStr(str) : ... def mametode(self) :
... print self ...
s=MyStr("Coucou") s.mametode <bound method MyStr.mametode of 'Coucou'>
s.mametode() Coucou
R12y wrote:
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc
"chaine".replace("old","new")
Merci.
Dans quelle section de la doc se trouvent toutes ces fonctions membres
de la chaine?
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe
de la classe String et on rajoute la fonction en question?
Tu crées un module, et tu places ta fonction dedans - simple, lisible,
efficace.
Tu peux bien sûr créer une sous-classe de str... mais je ne suis pas sûr
que tous les modules apprécient (ie. il faut vraiment avoir une bonne
raison pour faire une sour-classe de str). De plus, ne pas oublier qu'il
existe aussi les chaînes unicode (dont tu risques d'avoir besoin si tu
manipules des chaînes accentuées).
class MyStr(str) :
... def mametode(self) :
... print self
...
s=MyStr("Coucou")
s.mametode
<bound method MyStr.mametode of 'Coucou'>
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
Merci. Dans quelle section de la doc se trouvent toutes ces fonctions membres de la chaine?
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe de la classe String et on rajoute la fonction en question?
Tu crées un module, et tu places ta fonction dedans - simple, lisible, efficace.
Tu peux bien sûr créer une sous-classe de str... mais je ne suis pas sûr que tous les modules apprécient (ie. il faut vraiment avoir une bonne raison pour faire une sour-classe de str). De plus, ne pas oublier qu'il existe aussi les chaînes unicode (dont tu risques d'avoir besoin si tu manipules des chaînes accentuées).
class MyStr(str) : ... def mametode(self) :
... print self ...
s=MyStr("Coucou") s.mametode <bound method MyStr.mametode of 'Coucou'>
s.mametode() Coucou
Christophe
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc "chaine".replace("old","new")
Merci. Dans quelle section de la doc se trouvent toutes ces fonctions membres de la chaine?
De la doc je ne sais pas mais tu peux la retrouver en fesant help(str)
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe de la classe String et on rajoute la fonction en question?
Ce n'est pas conseillé de faire ça. C'est en général trop le bordel de toute façon :)
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles methodes dans str.
On Mon, 12 Sep 2005 10:08:50 +0200, Christophe wrote:
string.replace("chaine","old","new") deviens donc
"chaine".replace("old","new")
Merci.
Dans quelle section de la doc se trouvent toutes ces fonctions membres
de la chaine?
De la doc je ne sais pas mais tu peux la retrouver en fesant help(str)
Et supposons qu'on veuille ajouter une fonction, on crée une autre classe
de la classe String et on rajoute la fonction en question?
Ce n'est pas conseillé de faire ça. C'est en général trop le bordel de
toute façon :)
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles
methodes dans str.
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles methodes dans str. class MyString(str):
Je pense que le "bordel" auquel il faisait allusion est qu'en en faisant ça, on a des strings _et_ des MyString dans le binz...
-- SPIP, phpNuke, Plone, opengroupware... c'est bien CPS c'est mieux: http://www.cps-project.org/ Hébergement de sites CPS: http://www.objectis.org/
Jerome
R12y wrote:
On Mon, 12 Sep 2005 13:41:33 +0200, Jerome wrote:
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles methodes dans str.
class MyString(str):
Je pense que le "bordel" auquel il faisait allusion est qu'en en faisant ça, on a des strings _et_ des MyString dans le binz...
oui mais un objet MyString est aussi une chaine classique, tu peux l'utiliser telle quelle dans toutes les fonctions qui prennent des chaînes en paramètres de façon transparente.
A partir du moment où tu sais ce que tu fais, tout est possible ;-)
R12y wrote:
On Mon, 12 Sep 2005 13:41:33 +0200, Jerome wrote:
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles
methodes dans str.
class MyString(str):
Je pense que le "bordel" auquel il faisait allusion est qu'en en faisant
ça, on a des strings _et_ des MyString dans le binz...
oui mais un objet MyString est aussi une chaine classique, tu peux
l'utiliser telle quelle dans toutes les fonctions qui prennent des
chaînes en paramètres de façon transparente.
Je ne pense pas qu'il y ait une façon simple d'ajouter de nouvelles methodes dans str.
class MyString(str):
Je pense que le "bordel" auquel il faisait allusion est qu'en en faisant ça, on a des strings _et_ des MyString dans le binz...
oui mais un objet MyString est aussi une chaine classique, tu peux l'utiliser telle quelle dans toutes les fonctions qui prennent des chaînes en paramètres de façon transparente.