for fichier in [LISTE DE FICHIERS]: import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment peut-on faire cela ?
Sébastien
Bonjour,
Tu peux faire
for filename in ['string', 'math']: exec('import %s' % (filename))
print dir(string) print dir(math)
Jérôme
F. Petitjean
Bonjour,
Je souhaiterais faire la chose suivante :
for fichier in [LISTE DE FICHIERS]: import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment peut-on faire cela ? Regardez du côté de __import__, par exemple
modules = [ __import__(nom) for nom in liste ] Dans ce cas tous les fichiers-modules sont importés, mais vous n'obtenez que les modules eux-mêmes. Si on a modules = [ __import__(nom) for nom in ('sys', 're') ] modules[0] correspond au module sys sys = modules[0] re = modules[1] et pour effectuer ces assignations, vous pouvez lorgner du côté de exec, eval() ou même setattr(me, nom, module) si vous arrivez à avoir dans 'me' une référence au module courant : (non testé) me = __import__(__name__) for nom in ListeOfNoms: setattr(me, nom, __import__(nom)) del me # un cycle en moins pour gc
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous voulez réellement faire ?
Sébastien
Bonjour,
Je souhaiterais faire la chose suivante :
for fichier in [LISTE DE FICHIERS]:
import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment
peut-on faire cela ?
Regardez du côté de __import__, par exemple
modules = [ __import__(nom) for nom in liste ]
Dans ce cas tous les fichiers-modules sont importés, mais vous n'obtenez
que les modules eux-mêmes. Si on a
modules = [ __import__(nom) for nom in ('sys', 're') ]
modules[0] correspond au module sys
sys = modules[0]
re = modules[1]
et pour effectuer ces assignations, vous pouvez lorgner du côté de exec,
eval() ou même setattr(me, nom, module) si vous arrivez à avoir dans
'me' une référence au module courant : (non testé)
me = __import__(__name__)
for nom in ListeOfNoms:
setattr(me, nom, __import__(nom))
del me # un cycle en moins pour gc
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous voulez
réellement faire ?
for fichier in [LISTE DE FICHIERS]: import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment peut-on faire cela ? Regardez du côté de __import__, par exemple
modules = [ __import__(nom) for nom in liste ] Dans ce cas tous les fichiers-modules sont importés, mais vous n'obtenez que les modules eux-mêmes. Si on a modules = [ __import__(nom) for nom in ('sys', 're') ] modules[0] correspond au module sys sys = modules[0] re = modules[1] et pour effectuer ces assignations, vous pouvez lorgner du côté de exec, eval() ou même setattr(me, nom, module) si vous arrivez à avoir dans 'me' une référence au module courant : (non testé) me = __import__(__name__) for nom in ListeOfNoms: setattr(me, nom, __import__(nom)) del me # un cycle en moins pour gc
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous voulez réellement faire ?
Sébastien
Yermat
Jerome wrote:
Sébastien V. wrote:
Bonjour,
Je souhaiterais faire la chose suivante :
for fichier in [LISTE DE FICHIERS]: import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment peut-on faire cela ?
Sébastien
Bonjour,
Tu peux faire
for filename in ['string', 'math']: exec('import %s' % (filename))
print dir(string) print dir(math)
ou mieux :
for module in ["string", "math"]: __import__(module)
-- Yermat
Jerome wrote:
Sébastien V. wrote:
Bonjour,
Je souhaiterais faire la chose suivante :
for fichier in [LISTE DE FICHIERS]:
import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment
peut-on faire cela ?
Sébastien
Bonjour,
Tu peux faire
for filename in ['string', 'math']:
exec('import %s' % (filename))
print dir(string)
print dir(math)
ou mieux :
for module in ["string", "math"]:
__import__(module)
for fichier in [LISTE DE FICHIERS]: import fichier
Mon but est d'importer un nombre inconnu à la base de fichiers. Comment peut-on faire cela ?
Sébastien
Bonjour,
Tu peux faire
for filename in ['string', 'math']: exec('import %s' % (filename))
print dir(string) print dir(math)
ou mieux :
for module in ["string", "math"]: __import__(module)
-- Yermat
Sébastien V.
F. Petitjean wrote: # un cycle en moins pour gc
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous voulez réellement faire ?
En fait j'ai un petit outil qui prend en entrée des données (dans un fichier plat pour le moment). L'idée de départ est de proposer de nouvelles entrées de données (XML et base de données pour le moment) en ajoutant un fichier dans un répertoire. Ce fichier contiendrait juste l'interface permettant de lire les données.
D'ou mon besoin de pouvoir importer autant de modules qu'il y a de fichiers.
Sébastien
F. Petitjean wrote:
# un cycle en moins pour gc
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous
voulez réellement faire ?
En fait j'ai un petit outil qui prend en entrée des données (dans un fichier
plat pour le moment). L'idée de départ est de proposer de nouvelles entrées
de données (XML et base de données pour le moment) en ajoutant un fichier
dans un répertoire. Ce fichier contiendrait juste l'interface permettant de
lire les données.
D'ou mon besoin de pouvoir importer autant de modules qu'il y a de fichiers.
A la base, je mets en doute l'intérêt de passer par ces acrobaties.
Pourriez-vous nous donner un peu plus de détails sur ce que vous voulez réellement faire ?
En fait j'ai un petit outil qui prend en entrée des données (dans un fichier plat pour le moment). L'idée de départ est de proposer de nouvelles entrées de données (XML et base de données pour le moment) en ajoutant un fichier dans un répertoire. Ce fichier contiendrait juste l'interface permettant de lire les données.
D'ou mon besoin de pouvoir importer autant de modules qu'il y a de fichiers.
Sébastien
Do Re Mi chel La Si Do
Bonjour !
En plus des méthodes citées, ce petit code, tiré de la doc Python (il permet d'appeler un module par son nom_string, mais il permet aussi de choisir le nom du module, dans Python) :
En plus des méthodes citées, ce petit code, tiré de la doc Python (il permet
d'appeler un module par son nom_string, mais il permet aussi de choisir le
nom du module, dans Python) :
En plus des méthodes citées, ce petit code, tiré de la doc Python (il permet d'appeler un module par son nom_string, mais il permet aussi de choisir le nom du module, dans Python) :
Ce qui permet de connaître, à tout moment, l'ensemble des modules chargés par cette méthode. Je me sers de ça, dans un programme, où les utilisateurs peuvent importer leurs propres modules. Cela me permet d'éviter les conflits, entre les modules utilisateurs, et les modules standard-au-logiciel. Et j'ai, en plus, l'information.
@-salutations
Michel Claveau
Re !
Et, comme rien n'interdit d'utiliser un dictionnaire, on peut très bien
faire :
Ce qui permet de connaître, à tout moment, l'ensemble des modules chargés
par cette méthode.
Je me sers de ça, dans un programme, où les utilisateurs peuvent importer
leurs propres modules. Cela me permet d'éviter les conflits, entre les
modules utilisateurs, et les modules standard-au-logiciel. Et j'ai, en plus,
l'information.
Ce qui permet de connaître, à tout moment, l'ensemble des modules chargés par cette méthode. Je me sers de ça, dans un programme, où les utilisateurs peuvent importer leurs propres modules. Cela me permet d'éviter les conflits, entre les modules utilisateurs, et les modules standard-au-logiciel. Et j'ai, en plus, l'information.