前面介绍了一种最笨的方式,他的缺点就是冗余太多,浪费空间太大。
今天介绍一种优化方法,仅抽取程序中用到的部分。
要下班了,先贴上实现代码,改天有空再补上原理。
#-*- coding:gbk -*-
import sys
import os
import shutil
#获得程序中所有模块的路径
def getModulesPath() :
lst = []
#sys.modules是一个字典,数据格式如下:
#{'site': <module 'site' from 'D:\Python27\lib\site.pyc'>,
for v in sys.modules.itervalues() :
s = str(v)
if "from" in s:
data = s.split("'")
lst.append(data[-2])
else :
print "module : ", s
return lst
#抽取文件
def extractFiles(destDir, files) :
destDir.replace("/", "\\")
if destDir[-1] != '\\' :
destDir += '\\'
for f in files :
dest = filiterPath(destDir, f)
copyF(d