导入动态创建的Python文件

时间:2009-07-20 22:37:23

标签: python import

我正在通过运行python程序创建python文件。然后我想导入这些文件并运行在其中定义的函数。我创建的文件没有存储在我的路径变量中,我宁愿保持这种方式。

最初我调用execFile(<script_path>)函数,然后调用执行文件定义的函数。这具有始终输入if __name__ == "__main__"条件的副作用,在我当前的设置中我不可能发生这种情况。

我无法更改生成的文件,因为我已经创建了100个文件,并且不想全部修改它们。我只能更改调用生成文件的文件。

基本上我现在拥有的......

#<c:\File.py>
def func(word):
   print word

if __name__ == "__main__":
   print "must only be called from command line"
   #results in an error when called from CallingFunction.py
   input = sys.argv[1]

#<CallingFunction.py>
#results in Main Condition being called
execFile("c:\\File.py")
func("hello world")

2 个答案:

答案 0 :(得分:5)

使用

m = __import__("File")

这与做

基本相同
import File
m = File

答案 1 :(得分:3)

如果我正确地理解你对该文件不在sys.path并且你宁愿保持这种方式的说法,那么这仍然有效:

import imp

fileobj, pathname, description = imp.find_module('thefile', 'c:/')
moduleobj = imp.load_module('thefile', fileobj, pathname, description)
fileobj.close()

(当然,给定'c:/thefile.py',您可以使用os.path.spliy提取部分'c:/'和'thefile.py',并从'thefile.py'获取'thefile '与os.path.splitext。)