服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

python为java项目增加预编译脚本

   早就听说python是一个十分不错的脚本语言,语法简洁而且开发效率很高。在从http://www.python.org下载了最新的windows版本的python解释器后,我又从eclipse的插件网下了pydev这个支持python在eclipse开发的插件。python虽然是unix/linux下的东西,但是由于其执行和编写都很简单,所以在时常工作中能够快速解决一些小问题。同时,对于以后我需要研究算法,做论文的时候,也可以用python来快速开发一个算法的测试demo,尽量不必纠缠于程序具体实现时候的困难。

   python语言学起来比较容易,网上据说,python开发的效率比perl,php,ruby都高。在研究了ibm developworks的一篇文章:应用python解决一些实际问题(http://www-128.ibm.com/developerworks/cn/linux/tips/l-python/)后,我也为现在正在做的j2me项目做了个代码的预编译处理脚本。通过扫描java项目中的标签,#if_version,#end_version,从一个原始的j2me项目自动产生成各个机型的版本,比如nokia。索爱,moto。下面就是我第一次写的这个python小程序,总共才100行多点,如果用其它语言写,肯定不止这么少。

  1python为java项目增加预编译脚本import sys, string, os
  2python为java项目增加预编译脚本
  3python为java项目增加预编译脚本g_sourcepath = ''
  4python为java项目增加预编译脚本g_destpath=''
  5python为java项目增加预编译脚本g_parsefileext=['java','jsp',
  6python为java项目增加预编译脚本                'c','cpp','h',
  7python为java项目增加预编译脚本                'py','pl','php']
  8python为java项目增加预编译脚本
  9python为java项目增加预编译脚本def getversionlist():
10python为java项目增加预编译脚本    file = open('version.txt','r')
11python为java项目增加预编译脚本    lines = file.readlines()
12python为java项目增加预编译脚本    file.close()
13python为java项目增加预编译脚本    for i in range(len(lines)) :
14python为java项目增加预编译脚本        lines[i] = lines[i][:-1]
15python为java项目增加预编译脚本    return lines
16python为java项目增加预编译脚本
17python为java项目增加预编译脚本def isparsefile(filename):
18python为java项目增加预编译脚本    splits = os.path.splitext(filename)
19python为java项目增加预编译脚本    if len(splits) < 2:
20python为java项目增加预编译脚本        return false
21python为java项目增加预编译脚本    ext = splits[1]
22python为java项目增加预编译脚本    ext = ext[1:]
23python为java项目增加预编译脚本    if ext in g_parsefileext :
24python为java项目增加预编译脚本        return true
25python为java项目增加预编译脚本    else:
26python为java项目增加预编译脚本        return false
27python为java项目增加预编译脚本
28python为java项目增加预编译脚本def getsubdir(dirname):
29python为java项目增加预编译脚本    basedirlen = len(g_sourcepath)
30python为java项目增加预编译脚本    if basedirlen >= len(dirname)-1:
31python为java项目增加预编译脚本        return ''
32python为java项目增加预编译脚本    subdir = dirname[basedirlen+1:]
33python为java项目增加预编译脚本    return subdir
34python为java项目增加预编译脚本   
35python为java项目增加预编译脚本def scan(arg, dirname, names):
36python为java项目增加预编译脚本    for filename in names:
37python为java项目增加预编译脚本        # 如果不是文件(还可能是目录),则跳过
38python为java项目增加预编译脚本        if os.path.isfile(dirname+'//'+filename) == false:
39python为java项目增加预编译脚本            continue
40python为java项目增加预编译脚本        # 如果是生成版本说明文件,则跳过
41python为java项目增加预编译脚本        if filename == 'version.txt':
42python为java项目增加预编译脚本            continue
43python为java项目增加预编译脚本        if isparsefile(filename) :
44python为java项目增加预编译脚本            fileparsecopy(dirname,filename,arg)
45python为java项目增加预编译脚本        else:
46python为java项目增加预编译脚本            fileonlycopy(dirname,filename,arg)
47python为java项目增加预编译脚本
48python为java项目增加预编译脚本def fileonlycopy(dirname,filename,verlist):
49python为java项目增加预编译脚本    srcfilename = dirname+'//'+filename
50python为java项目增加预编译脚本    file = open(srcfilename,'r')
51python为java项目增加预编译脚本    text = file.read()
52python为java项目增加预编译脚本    file.close()
53python为java项目增加预编译脚本    subdir = getsubdir(dirname)
54python为java项目增加预编译脚本    for ver in verlist :
55python为java项目增加预编译脚本        destfilepath = g_destpath+'//'+ver
56python为java项目增加预编译脚本        if len(subdir) > 0 :
57python为java项目增加预编译脚本            destfilepath = destfilepath +'//'+subdir
58python为java项目增加预编译脚本        if(os.path.exists(destfilepath) == false):
59python为java项目增加预编译脚本            os.mkdir(destfilepath)
60python为java项目增加预编译脚本        destfilename = destfilepath+'//'+filename
61python为java项目增加预编译脚本        file = open(destfilename,'w')
62python为java项目增加预编译脚本        file.write(text)
63python为java项目增加预编译脚本        file.close()
64python为java项目增加预编译脚本        print 'copy '+destfilename
65python为java项目增加预编译脚本       
66python为java项目增加预编译脚本def fileparsecopy(dirname,filename,verlist):
67python为java项目增加预编译脚本    srcfilename = dirname+'//'+filename
68python为java项目增加预编译脚本    file = open(srcfilename,'r')
69python为java项目增加预编译脚本    srclines = file.readlines()
70python为java项目增加预编译脚本    file.close()
71python为java项目增加预编译脚本   
72python为java项目增加预编译脚本    subdir = getsubdir(dirname)
73python为java项目增加预编译脚本   
74python为java项目增加预编译脚本    destfiletexts = []
75python为java项目增加预编译脚本    for ver in verlist :
76python为java项目增加预编译脚本        destfiletexts.append('')
77python为java项目增加预编译脚本   
78python为java项目增加预编译脚本    # 扫描源文件的每一行
79python为java项目增加预编译脚本    curverindex = -1
80python为java项目增加预编译脚本    lineno = 1
81python为java项目增加预编译脚本    for curline in srclines :
82python为java项目增加预编译脚本        wordindex = -1
83python为java项目增加预编译脚本        verindex = 0
84python为java项目增加预编译脚本        for flag in verlist :
85python为java项目增加预编译脚本            if '#if_version '+flag in curline :
86python为java项目增加预编译脚本                curverindex = verindex
87python为java项目增加预编译脚本                break
88python为java项目增加预编译脚本            elif '#end_version' in curline :
89python为java项目增加预编译脚本                curverindex = -1
90python为java项目增加预编译脚本                break
91python为java项目增加预编译脚本            verindex = verindex +1
92python为java项目增加预编译脚本
93python为java项目增加预编译脚本        if verindex == len(verlist) : # 不是标记行
94python为java项目增加预编译脚本            if curverindex >= 0: # 某个版本标记内的行
95python为java项目增加预编译脚本                destfiletexts[curverindex] = destfiletexts[curverindex] + curline
96python为java项目增加预编译脚本            else : # 所有版本都有的内容
97python为java项目增加预编译脚本                for i in range(len(destfiletexts)) :
98python为java项目增加预编译脚本                    destfiletexts[i]  = destfiletexts[i]+ curline
99python为java项目增加预编译脚本                   
100python为java项目增加预编译脚本        lineno = lineno +1
101python为java项目增加预编译脚本    # 产生各个版本的目标文件
102python为java项目增加预编译脚本    verindex = 0;
103python为java项目增加预编译脚本    for ver in verlist :
104python为java项目增加预编译脚本        destfilepath = g_destpath+'//'+ver
105python为java项目增加预编译脚本        if len(subdir) > 0 :
106python为java项目增加预编译脚本            destfilepath = destfilepath +'//'+subdir
107python为java项目增加预编译脚本        if(os.path.exists(destfilepath) == false):
108python为java项目增加预编译脚本            os.mkdir(destfilepath)
109python为java项目增加预编译脚本        destfilename = destfilepath+'//'+filename
110python为java项目增加预编译脚本        file = open(destfilename,'w')
111python为java项目增加预编译脚本        file.write(destfiletexts[verindex])
112python为java项目增加预编译脚本        file.close()
113python为java项目增加预编译脚本        verindex = verindex + 1
114python为java项目增加预编译脚本        print 'parse '+ destfilename
115python为java项目增加预编译脚本
116python为java项目增加预编译脚本# main   
117python为java项目增加预编译脚本if len(sys.argv) < 3 :
118python为java项目增加预编译脚本    sys.stderr.write("no source directory or dest directory parameter!");
119python为java项目增加预编译脚本else:
120python为java项目增加预编译脚本    g_sourcepath = sys.argv[1]
121python为java项目增加预编译脚本    g_destpath = sys.argv[2]
122python为java项目增加预编译脚本    os.chdir(g_sourcepath)
123python为java项目增加预编译脚本    verlist = getversionlist()
124python为java项目增加预编译脚本    os.path.walk(g_sourcepath, scan, verlist)
125python为java项目增加预编译脚本sys.exit(1)
126python为java项目增加预编译脚本   

扫描关注微信公众号