- cmd_module = forward.get_cmd_module(func_name)
- print "-- call module:" , cmd_module
- function = getattr(cmd_module, func_name) # forward
- result = function(param, self) # call function
- def get_cmd_module(func_name):
- try:
- root = os.getcwd()
- path = ''.join([root, '/', 'command/', func_name,'.py'])
- module = imp.load_source(func_name, path)
- return module
- except:
- print "forward.py import %s moudle error! Msg is:" % (path,)
- print traceback.format_exc()
动态加载函数对象。问题是function = getattr(cmd_module, func_name)看似多此一举,
能用 cmd_module.func_name()直接调用函数,省一道工序?
func_name是一字符变量,即使把cmd_module和func_name连接起来也不能调用函数!
必须做转化!
- import os
- print os.getcwd()
- ##或者
- print os.path.abspath(os.curdir)
- print os.path.abspath('.')
就可以了。
( . 代表当前的路径,.. 代表当前路径的上一级路径。这在UNIX和Windows系统意义是类似的。
例如:
以Winodws系统为例:
当前路径是F:\Temp, 则 . 的绝对路径就是F:\Temp
.. 的绝对路径就是F:\
)
要获得上级目录的路径也很简单,print os.path.abspath('..')就可以了。
要改变当前路径,os.chdir(path) 就可以了 path里填要改变到的目录,例如os.chdir('D:\Program Files')
这样大部分的文件操作现在是相对于D:\Program Files 来了,例如fobj = open('Hello.txt'),实际会打开D:\Program Files\Hello.txt文件。
不要通过sys.argv[0]获得当前路径,那是不正确的。sys.argv[0] 是当前执行的Python脚本的文件名,不一定是当前的路径。
阅读(885) | 评论(0) | 转发(0) |