python利用()写模块_用python写的joomla模块生成器

这篇博客介绍了如何使用Python编写脚本来快速创建Joomla模块,包括模块名输入、文件生成、目录结构设置和内容替换,最后打包成zip文件以便导入Joomla。作者还提供了一个exe版本,方便在无Python环境的机器上操作。
摘要由CSDN通过智能技术生成

用到joomla做东西,但是每次新建模块都得以导入的方式才行(直接在数据表module中新增记录和新建module文件夹的方法在 1.7 版本上不灵)。于是用python写了个生成模块的小程序,这样直接输入模块名就可以生成一个模块zip包,再把zip包导入joomla后台就OK了。暂时只是生成 module ,以后有需要再做兼容 component 和 plugin 的吧。由于有些机器上没装python,用py2exe转为exe程序,直接运行压缩包里的joomla_module.exe根据提示填即可。

这里是 python 代码:

# A Generation for joomla to create module easily

# @author phpseyo

# @version 1.0.0

# @date 2011-12-23

import string

import shutil

import sys

import os

import types

import zipfile

def rewrite_file(path, find, rep):

memoryFile = [] #get these file content

fp = open (path, 'r+')

for line in fp.readlines():

if (type(find) is types.ListType):

i = 0

for find_word in find:

if (line.find(find_word)>1):

line = line.replace(find_word, rep[i])

i += 1

memoryFile.append(line)

continue

else :

if (line.find(find)>1):

line = line.replace(find, rep)

memoryFile.append(line)

continue

memoryFile.append(line)

fp.close()

os.remove(path)

newfiles = open(path, 'w')

for line in memoryFile:

newfiles.write(line)

newfiles.close()

def zip_dir(source_dir, out_path):

target_file = out_path + '.zip'

myZipFile = zipfile.ZipFile(target_file, 'w' )

for root,dirs,files in os.walk(source_dir):

for vfileName in files:

fileName = os.path.join(root,vfileName)

myZipFile.write( fileName, fileName, zipfile.ZIP_DEFLATED )

myZipFile.close()

__author__="Administrator"

__date__ ="$2011-12-22 17:52:45$"

# define file path

mod_dir = 'mod_name/'

lg_dir = 'language/zh-CN/'

tmpl_dir = 'tmpl/'

module_path = 'D:/'

file_helper = mod_dir + 'helper.php'

file_name_php = mod_dir + 'mod_name.php'

file_name_xml = mod_dir + 'mod_name.xml'

file_default = mod_dir + tmpl_dir + 'default.php'

file_index = mod_dir + 'index.html'

file_lg_ini = mod_dir + lg_dir + 'zh-CN.mod_name.ini'

file_lg_sys_ini = mod_dir + lg_dir + 'zh-CN.mod_name.sys.ini'

# Get user's input

mod_name = raw_input('Please input your mod_name!\n')

mod_name_lower = mod_name.lower()

mod_name_upper = mod_name.upper()

mod_name_camel = ''

# Split '_' and get the camel words

if mod_name.find('_') :

mod_name_split = mod_name.split('_')

for mod_name_word in mod_name_split :

mod_name_camel += string.capwords(mod_name_word)

else :

mod_name_camel = string.capwords(mod_name)

# Make directory and files

if os.path.exists(module_path+'mod_'+mod_name_lower):

print('\nDirectory have been made! ')

os._exit(0)

new_mod_dir = module_path+'mod_'+mod_name_lower+'/'

os.makedirs(new_mod_dir+lg_dir)

os.makedirs(new_mod_dir+tmpl_dir)

# Copy files to the new dir

shutil.copy(file_helper, new_mod_dir+'helper.php')

shutil.copy(file_name_php, new_mod_dir+'mod_'+mod_name_lower+'.php')

shutil.copy(file_name_xml, new_mod_dir+'mod_'+mod_name_lower+'.xml')

shutil.copy(file_index, new_mod_dir+'index.html')

shutil.copy(file_index, new_mod_dir+tmpl_dir+'index.html')

shutil.copy(file_default, new_mod_dir+tmpl_dir+'default.php')

shutil.copy(file_lg_ini, new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.ini')

shutil.copy(file_lg_sys_ini, new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.sys.ini')

# Replace the words in files

find1 = '[Name]'

find2 = ['[name]', '[NAME]']

find3 = '[NAME]'

rep2 = [mod_name_lower, mod_name_upper]

rewrite_file(new_mod_dir+'helper.php', find1, mod_name_camel)

rewrite_file(new_mod_dir+'mod_'+mod_name_lower+'.php', find1, mod_name_camel)

rewrite_file(new_mod_dir+'mod_'+mod_name_lower+'.xml', find2, rep2)

rewrite_file(new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.ini', find3, mod_name_upper)

rewrite_file(new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.sys.ini', find3, mod_name_upper)

# Zip files

zip_dir(new_mod_dir, module_path+'mod_'+mod_name_lower)

print('OK! The zip is under '+module_path)

raw_input()

下载次数: 8

0

1

分享到:

sina.jpg

tec.jpg

2011-12-23 14:13

浏览 1552

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值