我正在通过运行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")
答案 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
。)