python如何import 文件名存在字符串变量里的module

Python中经常需要import module,但有时候的场景是module name或者文件名是存在了一个string的变量里,这时候import就不能用原来的方式了。

>>> tmp='os'

>>> import tmp
Traceback (most recent call last):
  File "", line 1, in
ImportError: No module named tmp


解决这个问题可以使用如下方法:

>>> module1=__import__(tmp)
>>> print module1.__doc__

OS routines for Mac, NT, or Posix depending on what system we're on.


This exports:
  - all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.
  - os.path is one of the modules posixpath, or ntpath
  - os.name is 'posix', 'nt', 'os2', 'ce' or 'riscos'
  - os.curdir is a string representing the current directory ('.' or ':')
  - os.pardir is a string representing the parent directory ('..' or '::')
  - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
  - os.extsep is the extension separator ('.' or '/')
  - os.altsep is the alternate pathname separator (None or '/')
  - os.pathsep is the component separator used in $PATH etc
  - os.linesep is the line separator in text files ('\r' or '\n' or '\r\n')
  - os.defpath is the default search path for executables
  - os.devnull is the file path of the null device ('/dev/null', etc.)


Programs that import and use 'os' stand a better chance of being
portable between different platforms.  Of course, they must then
only use functions that are defined by all platforms (e.g., unlink
and opendir), and leave all pathname manipulation to os.path
(e.g., split and join).


另外还有一种需要python2.7及以后版本才支持的:

from importlib import import_module
import_module(tmp)


你可能感兴趣的:(技术)