??xml version="1.0" encoding="utf-8" standalone="yes"?>作?zzj 日期:2006-07-0一、简?/strong>
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程?*.exe)的工Pq样Q你可以不用装python而在windowspȝ上运行这个可执行E序?br />
py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立E序。py2exe是发布在开源许可证下的?br />
二、安装py2exe
?a target="_blank">http://prdownloads.sourceforge.net/py2exe下蝲q运行与你所安装的Python对应的py2exe版本的installerQ这安装py2exe和相应的例子Q这些例子被安装在lib\site-packages\py2exe\samples目录下?br />
三、py2exe的用?/strong>
如果你有一个名为helloworld.py的python脚本Q你x它{换ؓq行在windows上的可执行程序,q运行在没有安装python的windowspȝ上,那么首先你应写一个用于发布程序的讄脚本例如mysetup.pyQ在其中的setup函数前插入语句import py2exe ?br />
mysetup.pyCZ如下:
# mysetup.py
from distutils.core import setup
import py2exe
setup(console=["helloworld.py"])
然后按下面的Ҏ(gu)q行mysetup.py:
python mysetup.py py2exe
上面的命令执行后生一个名为dist的子目录Q其中包含了helloworld.exe,python24.dll,library.zipq些文g?br />
如果你的helloworld.py脚本中用了已~译的C扩展模块Q那么这些模块也会被拯在个子目录中Q同P所有的dll文g在运行时都是需要的Q除了系l的dll文g?br />
dist子目录中的文件包含了你的E序所必须的东西,你应这个子目录中的所有内容一起发布?br />
默认情况下,py2exe在目录dist下创Z下这些必ȝ文gQ?br />
1、一个或多个exe文g?br />
2、python##.dll?nbsp;
3、几?pyd文gQ它们是已编译的扩展名,它们?font style="background-color: #00ffff">exe文g所需要的Q加上其它的.dll文gQ这?dll?pyd所需要的?br />
4、一个library.zip文gQ它包含了已~译的纯的python模块?pyc?pyo
上面的mysetup.py创徏了一个控制台的helloword.exeE序Q如果你要创Z个图形用L(fng)的程序,那么你只需要将mysetup.py中的console=["helloworld.py"]替换为windows=["myscript.py"]既可?br />
py2exe一ơ能够创建多?font style="background-color: #00ffff">exe文gQ你需要将q些脚本文g的列表传递给console或windows的关键字参数。如果你有几个相兌的脚本,那么q是很有用的?br />
q行下面个命令,显Cpy2exe命o的所有命令行标记?br />
python mysetup.py py2exe --help
四、指定额外的文g
一些应用程序在q行旉要额外的文gQ诸如配|文件、字体、位图?br />
如果在安装脚本中用data_files可选项指定了那些额外的文gQ那么py2exe能将q些文g拯到dist子目录中。data_files应包含一个元l?target-dir, files)列表Q其中的files是这些额外的文g的列表?br />
CZ如下Q?br />
# mysetup.py
from distutils.core import setup
import glob
import py2exe
setup(console=["helloworld.py"],
data_files=[("bitmaps",
["bm/large.gif", "bm/small.gif"]),
("fonts",
glob.glob("fonts\\*.fnt"))],
)
说明Qdata_files选项创Z个子目录dist\bitmapsQ其中包含两?gif文gQ一个子目录dist\fontsQ其中包含了所有的.fnt文g?br />
五、Windows NT services
你可以通过传递一个service关键字参数给setup函数来徏造Windows NT services
,q个service参数的值必L一个Python模块?包含一servicec?的列表?br />
CZ如下Q?br />
# mysetup.py
from distutils.core import setup
import py2exe
setup(service=["MyService"])
所建造的可执行的service是可以通过在其后跟一定的命o行参数标记来自行安装和卸载的。你可以通过在这个可执行的service(exe)后跟一-help参数来得到更多的帮助?br />
六、COM servers
你可以通过传递一个com_server 关键字参数给setup函数来徏造Windows NT services
,q个service参数的值必L一个Python模块?包含一个或多个COM server c?的列表?br />
CZ如下Q?br />
# mysetup.py
from distutils.core import setup
import py2exe
setup(com_server=["win32com.server.interp"])
默认情况下,DLL?font style="background-color: #00ffff">EXE servers被徏造,你不需要它们的话你可以单的删除它们?br />
]]>#!/usr/bin/perl
2print "This is aaa file handler.\n";
3if(open(MYFILE,"Radius20101101-001.txt")){
4 while($line=<MYFILE>){
5 @array=split("Identifier=",$line);
6 @array=split("\t",$array[1]);
7 print $array[0];
8 print ("\n");
9 }
10 close(FD);
11}
]]>
我们知道split是工作在列表的环?他会装输入的数据,多分割几?在徏立结果列?然后q回.接着,会返回第三个参数内的数据,其它的都扔弃.
W三个参C定要非常心,Z?如下的程?我们只需要前二个参数.我们注意W三个参?br />
#!/usr/bin/perl
while(<DATA>){
my ($aa, $dd) = split(/\s+/, $_, 2);
print "$aa || $dd ||\n";
}
__DATA__
1xxxxxxx 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx 2xxxxxx 3xxxxxx 4xxxxx
如果splitW三个参数是写的2的话,输出如下l果
1xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
2||
31xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
4||
5
如果split是写?的话,输出如下l果
1xxxxxxx || 2xxxxxx ||
21xxxxxxx || 2xxxxxx ||
3
q主要是因ؓ,如果惛_得前2个字D?字段记数?.因ؓ需要给文g切成3?拿出前二?不然都给最后面部分做一份了.
转自q望技术论坛?br />
W三个参数在大数据量情况下还是可以提高不速度?
]]>
pȝ要部|到AIXq_
问题Q?br />
make~译报错Q提C:cc_r not foundQ编译器找不刎ͼ那就手动指定一下,cc_r应该是在/usr/vac/bin目录下?br />
#vi MakeFile 扑ֈCC = cc_r Ҏ(gu) /usr/vac/bin/cc_rQ然后执行make
提示Q?nbsp;The license for the Evaluation version of IBM XL C/C++ for AIX, V10.1 compiler product has expired. 我去Q过期了。。。这家伙q没免费的。?br />
另找办法Qcc_r不让用就用gcc吧?br />
AIX Toolbox downloadQ?/span>http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html 中免费下载?br />
?c)式安?#rpm –ivh gcc-4.2.0-3.aix5.3.ppc.rpm
把cc_r替换为gccQ执行make~译。报错一大堆Q各U的~译选项cd不符?br />
解决Ҏ(gu)
|上搜的Q?br />
现在AIX自带的perl实例因ؓ不是用gcc~译的,所以不可以在其基础上用gcc~译安装相关模块Q?br />
需要从|上下蝲perl的源代码Q用gcc~译安装一份新的perl实例Q?br />
现在AIX自带的perl实例因ؓ不是用gcc~译的,所以不可以在其基础上用gcc~译安装相关模块Q?br />
需要从|上下蝲perl的源代码Q用gcc~译安装一份新的perl实例Q?/span>
那就去perl下最新的源码包吧Q?/span>http://www.perl.com/
指定~译器和目录 #sh Configure -de -Dcc=gcc –Dprefix=/opt/perl-5.10
#make
#make install
讄PATH环境变量Qexport PATH=/opt/perl-5.10/bin:$PATH (注意把新的perl实例的bin路径讄在前面,是因为系l中原有的perl实例q存在,可以做到优先使用新的perl实例)
#perl -version 认一下最新的版本
然后再去~译String-CRC32?br />
#perl MakeFile.pl
#make
#make install
安装完成Q测试成功。这一大圈l的?br />