Pour l'instant je filtre - en capture ou en exclusion - sur des
extensions. Ça marche bien, à base de:
os.path.splitext(nomcomplet)[1][1:]
Maintenant je souhaiterais affiner un peu, pour au moins gérer des noms
comme '.htaccess', 'optionDB', etc. Je voudrais également pouvoir
accepter - ou refuser - un nom particulier, bien entendu. En bref, je
souhaite utiliser des quantificateurs[1] '*' et éventuellement '?'. Par
exemple '*.py', '__*.py', et peut-être '*.py?'. En gros comme le
filetype dans tkFileDialog, mais je pense que le filtrage est fait par
l'OS. Je ne souhaite pas nécessairement la grammaire complète si elle
existe, d'ailleurs je me contente de '*' et parfois de '?' depuis 25
ans sous DOS (et aujourd'hui Linux, par exemple).
Il y a saisie des filtres, donc je ne peux pas partir de regex. Si je
les utilise il me faut les fabriquer.
Qu'est-ce qui pourrait m'aider dans les modules standard et qui m'a
échappé ? Un truc genre os.path.match(filename, '*.py'). Ce que je
crains c'est de ma lancer dans du codage sauvage avant de me rendre
compte que ça existait prêt à consommer...
Puisque j'y suis, une question qui ne méritait pas d'ouvrir un fil:
existe-t-il une fonction pour tester qu'un chemin est 'à l'intérieur'
d'un autre. Pour l'instant j'utilise:
os.path.normpath(path[:len(ldpath)]) == os.path.normpath(ldpath)
Merci pour votre patience, et par avance pour vos avis éclairés.
[1] 'quantificateur / quantifier' sont-ils les bons termes pour
chercher sur Google ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Maurette
[...]
http://www.python.org/doc/lib/module-fnmatch.html
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé sans votre aide, en tout cas avant d'avoir passé pas mal de temps à réinventer la roue.
Il a un drôle de nom, ce module. Existe-t-il un pcmatch, psmatch, umpmatch, modemmatch(*), etc. ?
(*) Celui-ci mérite une explication, l'information étant toute fraîche. Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le Modem". J'ignore s'il était sérieux ou facétieux ...
-- Pierre Maurette
[...]
http://www.python.org/doc/lib/module-fnmatch.html
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé
sans votre aide, en tout cas avant d'avoir passé pas mal de temps à
réinventer la roue.
Il a un drôle de nom, ce module. Existe-t-il un pcmatch, psmatch,
umpmatch, modemmatch(*), etc. ?
(*) Celui-ci mérite une explication, l'information étant toute fraîche.
Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement
Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le
Modem". J'ignore s'il était sérieux ou facétieux ...
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé sans votre aide, en tout cas avant d'avoir passé pas mal de temps à réinventer la roue.
Il a un drôle de nom, ce module. Existe-t-il un pcmatch, psmatch, umpmatch, modemmatch(*), etc. ?
(*) Celui-ci mérite une explication, l'information étant toute fraîche. Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le Modem". J'ignore s'il était sérieux ou facétieux ...
-- Pierre Maurette
Bruno Desthuilliers
Bonjour,
Pour l'instant je filtre - en capture ou en exclusion - sur des extensions. Ça marche bien, à base de: os.path.splitext(nomcomplet)[1][1:]
Maintenant je souhaiterais affiner un peu, pour au moins gérer des noms comme '.htaccess', 'optionDB', etc. Je voudrais également pouvoir accepter - ou refuser - un nom particulier, bien entendu. En bref, je souhaite utiliser des quantificateurs[1] '*' et éventuellement '?'. Par exemple '*.py', '__*.py', et peut-être '*.py?'.
http://www.python.org/doc/lib/module-fnmatch.html
Bonjour,
Pour l'instant je filtre - en capture ou en exclusion - sur des
extensions. Ça marche bien, à base de:
os.path.splitext(nomcomplet)[1][1:]
Maintenant je souhaiterais affiner un peu, pour au moins gérer des noms
comme '.htaccess', 'optionDB', etc. Je voudrais également pouvoir
accepter - ou refuser - un nom particulier, bien entendu. En bref, je
souhaite utiliser des quantificateurs[1] '*' et éventuellement '?'. Par
exemple '*.py', '__*.py', et peut-être '*.py?'.
Pour l'instant je filtre - en capture ou en exclusion - sur des extensions. Ça marche bien, à base de: os.path.splitext(nomcomplet)[1][1:]
Maintenant je souhaiterais affiner un peu, pour au moins gérer des noms comme '.htaccess', 'optionDB', etc. Je voudrais également pouvoir accepter - ou refuser - un nom particulier, bien entendu. En bref, je souhaite utiliser des quantificateurs[1] '*' et éventuellement '?'. Par exemple '*.py', '__*.py', et peut-être '*.py?'.
http://www.python.org/doc/lib/module-fnmatch.html
Bruno Desthuilliers
[...]
http://www.python.org/doc/lib/module-fnmatch.html
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé sans votre aide, en tout cas avant d'avoir passé pas mal de temps à réinventer la roue.
Il a un drôle de nom, ce module.
AMHA, "fn" => "file name".
Existe-t-il un pcmatch, psmatch, umpmatch, modemmatch(*), etc. ?
On n'est pas encore vendredi, pourtant ?-)
(*) Celui-ci mérite une explication, l'information étant toute fraîche. Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le Modem". J'ignore s'il était sérieux ou facétieux ...
Personnellement, je propose un "Mouvement Démocrate Républicain" (mdr !-)
[...]
http://www.python.org/doc/lib/module-fnmatch.html
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé
sans votre aide, en tout cas avant d'avoir passé pas mal de temps à
réinventer la roue.
Il a un drôle de nom, ce module.
AMHA, "fn" => "file name".
Existe-t-il un pcmatch, psmatch,
umpmatch, modemmatch(*), etc. ?
On n'est pas encore vendredi, pourtant ?-)
(*) Celui-ci mérite une explication, l'information étant toute fraîche.
Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement
Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le
Modem". J'ignore s'il était sérieux ou facétieux ...
Personnellement, je propose un "Mouvement Démocrate Républicain" (mdr !-)
Mille merci(s?). Il était dans ma doc, mais je ne l'aurais pas trouvé sans votre aide, en tout cas avant d'avoir passé pas mal de temps à réinventer la roue.
Il a un drôle de nom, ce module.
AMHA, "fn" => "file name".
Existe-t-il un pcmatch, psmatch, umpmatch, modemmatch(*), etc. ?
On n'est pas encore vendredi, pourtant ?-)
(*) Celui-ci mérite une explication, l'information étant toute fraîche. Le troisième homme, l'oreillu au tracteur, a fondé le Mouvement Démocrate, dont il expliquait aujourd'hui qu'on devra l'appeler "le Modem". J'ignore s'il était sérieux ou facétieux ...
Personnellement, je propose un "Mouvement Démocrate Républicain" (mdr !-)
MCI, Shadok Gouroudoudou
Bonjour !
http://www.python.org/doc/lib/module-fnmatch.html
Attention à un détail : fnmatch (comm glob un autre module standard du même secteur) se comporte "comme sous Unix" même sous windows. Cela sous-entend certaines différences de comportement, entre ces modules et des instructions standards de windows, comme DIR, DEL, COPY, etc.
-- @-salutations
Michel Claveau
Bonjour !
http://www.python.org/doc/lib/module-fnmatch.html
Attention à un détail : fnmatch (comm glob un autre module standard du
même secteur) se comporte "comme sous Unix" même sous windows. Cela
sous-entend certaines différences de comportement, entre ces modules et
des instructions standards de windows, comme DIR, DEL, COPY, etc.
Attention à un détail : fnmatch (comm glob un autre module standard du même secteur) se comporte "comme sous Unix" même sous windows. Cela sous-entend certaines différences de comportement, entre ces modules et des instructions standards de windows, comme DIR, DEL, COPY, etc.
-- @-salutations
Michel Claveau
Pierre Maurette
Réponse à Bruno et au shadok: ça fonctionne sous Windows et Linux, c'est même redoutablement efficace. Comme j'ai une liste d'expressions avec qunatificateurs, je repasse par des regex:
compiledpattern = re.compile('|'.join([fnmatch.translate(pat) for pat in self.dicodata[self.dicodata['mode']]]) , re.IGNORECASE)
Réponse à Bruno et au shadok: ça fonctionne sous Windows et Linux,
c'est même redoutablement efficace. Comme j'ai une liste d'expressions
avec qunatificateurs, je repasse par des regex:
compiledpattern = re.compile('|'.join([fnmatch.translate(pat) for pat
in self.dicodata[self.dicodata['mode']]])
, re.IGNORECASE)
Réponse à Bruno et au shadok: ça fonctionne sous Windows et Linux, c'est même redoutablement efficace. Comme j'ai une liste d'expressions avec qunatificateurs, je repasse par des regex:
compiledpattern = re.compile('|'.join([fnmatch.translate(pat) for pat in self.dicodata[self.dicodata['mode']]]) , re.IGNORECASE)