bs7280
bs7280

Reputation: 1094

Python importing a function with file's name contained in a variable

Hi I have a directory in the same folder as my main script called 'actions' in this folder there are several scripts that may be used at any time by the main script. I am at the point where I have the name of the script in the form of a string in a variable called VAR (for the sake of example). I would like to be able to import this file using the variable.

Upvotes: 3

Views: 3655

Answers (3)

Adam Smooch
Adam Smooch

Reputation: 1322

2021 update: Python3.9.5's __import__() includes this message:

Import a module. Because this function is meant for use by the Python interpreter and not for general use, it is better to use importlib.import_module() to programmatically import a module.

So it then becomes:

from importlib import import_module
import_module(modulename_or_relative_filename)

Upvotes: 0

nims
nims

Reputation: 3871

Use the __import__ function

__import__(str)

Upvotes: 3

Sven Marnach
Sven Marnach

Reputation: 601539

If your aim is simply to execute the files, you can use

with open(filename) as f:
    exec(compile(f.read(), filename, "exec"))

or the Python 2.x function execfile().

If you actually want to import the modules using the full import machinery, you need an __init__.py in the directory actions, and can use something like

module = __import__("actions.foo")

to import actions/foo.py.

Upvotes: 3

Related Questions