Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5120024
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类: Python/Ruby

2011-06-08 14:24:10

  1. cmd_module = forward.get_cmd_module(func_name)
  2. print "-- call module:" , cmd_module
  3. function = getattr(cmd_module, func_name) # forward
  4. result = function(param, self) # call function


  5. def get_cmd_module(func_name):
  6.     try:
  7.         root = os.getcwd()
  8.         path = ''.join([root, '/', 'command/', func_name,'.py'])
  9.         module = imp.load_source(func_name, path)
  10.         return module
  11.     except:
  12.         print "forward.py import %s moudle error! Msg is:" % (path,)
  13.         print traceback.format_exc()
 
动态加载函数对象。问题是function = getattr(cmd_module, func_name)看似多此一举,
能用 cmd_module.func_name()直接调用函数,省一道工序?
func_name是一字符变量,即使把cmd_module和func_name连接起来也不能调用函数!
必须做转化!
 
  1. import os

  2. print os.getcwd()

  3. ##或者

  4. print os.path.abspath(os.curdir)


  5. 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脚本的文件名,不一定是当前的路径。

阅读(895) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~