Say I have a function which takes two arguments: arg1, arg2. I want the function to then call arg1_arg2.py. Of course, the actual file wouldn't be called arg1_arg2.py. So, if the user inputs hello, hi as the arguments, the function will call hello_hi.py (more specifically, it instantiates a class located in hello_hi.py, but that is not important). I can't do this using %s, since I am dealing with files, not strings.
Asked
Active
Viewed 44 times
2 Answers
4
You can use importlib:
import importlib
hello = importlib.import_module("hello_hi.py")

Aamir Rind
- 38,793
- 23
- 126
- 164
0
It sounds like you want to use importlib
shown here. Something like
import importlib
importlib.import_module("{}.py".format(your_str))
I think there's almost certainly a better way to do this though -- why not just put a toplevel __init__.py
in your directory -- assume the directory is myclasses
-- and then instantiate getattr(myclasses, your_str).ClassName()
instead. importlib
seems like the wrong way to go.

Community
- 1
- 1

Patrick Collins
- 10,306
- 5
- 30
- 69