python打包编译_python批量编译压缩打包实现

本文介绍了一种使用Python批量编译.py文件为.pyc文件的方法,并进一步将编译后的文件压缩成zip格式,同时清理源文件及临时文件。通过提供的Python脚本,实现了自动化流程,包括编译、压缩及清理工作。
摘要由CSDN通过智能技术生成

需求:将py文件批量编译,编译后删除py文件并压缩为zip文件,最后保留zip文件,其余文件及文件夹都删除。

D:\pro-compile

MPV1

TMMV1

...

D:\pro-compile\MPV1

MPV1

__init__.py

MPV1.xml

...

D:\pro-compile\MPV1\MPV1

Item01.py

Item02.py

Item03.py

Item04.py

...

~~~~~~~执行后~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

D:\pro-compile

MPV1 .zip

TMMV1.zip

...

~~~~~~~实现代码~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# -*- coding: utf-8 -*-

import compileall

import shutil

import os.path

import stat

import re

def Compile(dir):

compileall.compile_dir(dir)

def DeletePy(dir):

regexp = r”\.py$”

regexpObj = re.compile(regexp,re.M)

for parent,dirnames,filenames in os.walk(dir):

for file in filenames:

if regexpObj.search(file):

os.remove(os.path.join(parent,file))

def ZipPY(dir,rootdir):

for parent,dirnames,filenames in os.walk(dir):

for file in filenames:

if file == “__init__.pyc”:

#print(os.getcwd())

os.chdir(parent)

target = rootdir + “\\” + dirnames[0] + “.zip”

source = []

source += dirnames

source += filenames

zipCmd = ‘”C:\\Program Files (x86)\\WinRAR\\Rar.exe” a %s %s’ %(target,” “.join(source))

os.system(zipCmd)

return “success zip”

def Rmdirs(dir,rootdir):

os.chdir(rootdir)

if os.path.isdir(dir):

print(‘delete ‘ + os.path.join(rootdir,dir))

shutil.rmtree(os.path.join(rootdir,dir), True)

def main(*rootdir):

if not rootdir or rootdir[0].strip() == “”:

rootdir = ‘D:\\PM-compile’

for parent,dirnames,filenames in os.walk(rootdir):

for dir in dirnames:

dir = os.path.join(parent,dir)

Compile(dir)

print ”.join((dir,’complete compile-‘))

#path = ”.join((dir,’complete compile-‘))

DeletePy(dir)

print(”.join(‘complete delete .py files-‘))

ZipPY(dir, rootdir)

print(”.join(‘complete zip-‘))

Rmdirs(dir,rootdir)

print(dir.join(‘complete delete dir-‘))

main(‘D:\\PM-compile’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值