URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 4 » import相关:一个使用ihooks例子
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
import相关:一个使用ihooks例子
Author: flingfly    Posted: 2006-01-19 09:51    Length: 4,784 byte(s)
[Original] [Print] [Top]
有感于自己学习找不到例子,希望对相关人有帮助!


import ihooks
import os
import __builtin__
import imp
import sys

from imp import C_EXTENSION, PY_SOURCE, PY_COMPILED
from imp import C_BUILTIN, PY_FROZEN, PKG_DIRECTORY
BUILTIN_MODULE = C_BUILTIN
FROZEN_MODULE = PY_FROZEN

rootpkg_dir = "ROOT"

class PackageFS:
def __init__(self):
self.prefix_path = r"f: estscript"

def printMsg(self, msg):
print "PackageFS -- ", msg

def CombinePath(self, filenameinPkg):
i = filenameinPkg.find(rootpkg_dir)
pos = i + 1 + len(rootpkg_dir)
filename = filenameinPkg[pos:]
realpath = self.prefix_path + "\" + filename
print "filename = ", filename
print "realpath = ", realpath
return realpath
def isdir(self,path):
realpath = self.CombinePath(path)
self.printMsg("isdir")
print "path = ", path
print "realpath = ", realpath
return os.path.isdir(realpath)

def path_isfile(self, path):
self.printMsg("path_isfile")
realpath = self.CombinePath(path)
return os.path.isfile(realpath)

def openfile(self, x):
self.printMsg("openfile")
parms = list(x)
path = parms[0]
realpath = self.CombinePath(path)
parms[0] = realpath
print " realpath = ", realpath
print "*(tuple(parms))", tuple(parms)


return open(*(tuple(parms)))
def listdir(self, path):
self.printMsg("listdir")
realpath = self.CombinePath(path)
return os.listdir(realpath)


class XyyLoader(ihooks.ModuleLoader):
pass
class XyyHook(ihooks.Hooks):
def __init__(self):
self.pck_fs = PackageFS()
def printMsg(self, msg):
print "XyyHook -- ", msg

def IsInPackage(self, filename):
if (rootpkg_dir in filename):
return True
else:
return False

def path_exists(self, x):
self.printMsg("path_exists")
if (self.IsInPackage(x)):
return self.pck_fs.exists(x)
else:
return os.path.exists(x)
def path_isdir(self, x):
self.printMsg("path_isdir")
if (self.IsInPackage(x)):
re = self.pck_fs.isdir(x)
print "x is path? ", re
return self.pck_fs.isdir(x)
else:
return os.path.isdir(x)
def path_isfile(self, x):
self.printMsg("path_isfile")
if (self.IsInPackage(x)):
return self.pck_fs.isfile(x)
else:
return os.path.isfile(x)
def openfile(self, *x):
self.printMsg("openfile")
print "*"*20, "x = ", x
print "*"*20, "x[0] = ", x[0]
path,right = x
if (self.IsInPackage(path)):
print "call package openfile path = ", path
return self.pck_fs.openfile((path, right))
else:
print "call fs openfile path = " , path
return open(*x)
def listdir(self, x):
self.printMsg("listdir")
if (self.IsInPackage(x)):
return self.pck_fs.listdir(x)
else:
return os.listdir(x)

class XyyImporter(ihooks.ModuleImporter):
pass



xyyhook = XyyHook()
xyyLoader = XyyLoader(xyyhook)
importer = ihooks.ModuleImporter(xyyLoader)
ihooks.install(importer)

----
(1)多回答问题。
(2)多提出问题。
[Original] [Print] [Top]
« Previous thread
Tkinter调用函数的方法,新手提问!
Python 编 程
4
Next thread »
翻译:New import hook
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:10:57, cost 0.036910057067871 ms.