python程序-文件夹压缩打包
2009-05-13 10:45
387 查看
文件夹打包其实很方便,我们可以用tar,rar,7z等等,
有时,我们为了打成多个包。如果我们有10个包,不小心掉了一个,那么对方根本就无法解压出来任何信息。
我的程序把文件夹中的多个文件打包成一个独立的压缩文件,这样,即使对方10个文件只拿到5个,那么他也可以解压出文件使用。
本程序特别适合图片打包,尤其是通过网络发给对方,或者是上传到网上的资源。
注:本程序只是调用压缩程序,在使用前最好安装好压缩程序。
#!/usr/bin/python
#coding=utf-8
#makepaceage.py
import getopt
import sys
import glob
import os
def helpmessage():
"""print help message
"""
print "Make package ."
print "Usage1: makepaceage abc.rar 3m /"*.jpg/""
print "1.Filename don't in chinese"
print "2.Format: rar,tgz,bz2,7z "
print ""
sys.exit()
def packit(packagename,serial,fileslist):
"""make a package
@packagename eg. aaa2.rar
@serial the serial of the package eg. 2
@fileslist files list in the package
"""
pos=packagename.rindex(".")
sztempfilename=packagename[:pos] # filename without ext
sztemptype=packagename[pos+1:] # ext
tempname=sztempfilename+str(serial)+"."+sztemptype
#print tempname
makepackage(tempname,fileslist)
def makepackage(packagename,fileslist):
"""make a package
@packagename eg. aaa2.rar
@fileslist files list in the package
"""
pos=packagename.rindex(".")
sztype=packagename[pos+1:]
szcommand=""
flag=1
filesliststring=" ".join(fileslist)
#print packagename
if sztype=="rar" :
szcommand="rar a "+packagename+" "+filesliststring
elif sztype=="gz" or sztype=="tgz":
szcommand= "tar zcvf "+packagename+" "+filesliststring
elif sztype=="7z" :
szcommand= "7z a "+packagename+" "+filesliststring
elif sztype=="bz2" :
szcommand= "tar jcvf "+packagename+" "+filesliststring
else :
szcommand= "other not supported."
flag=0
print szcommand
if flag!=0:
os.system(szcommand)
pass
def getintsize(szsize):
"""get the int size
@szsize, eg. 3m ,3m=3*1024*1024
"""
size1=szsize.strip()
size1=size1.lower()
size1length=len(size1)
size2=size1[:(size1length-1)]
unit=size1[(size1length-1):]
if unit=="b" :
size=size2
elif unit=="k" :
size=int(size2)*1024
elif unit=="m" :
size=int(size2)*1024*1024
else :
size=0
return size
def getHumansize(size):
"""get human reading
@size eg. 1536=1.5k
"""
count=0
value=size
value1=int(value)/1024
while (value1)!=0:
value=value1
count+=1
value1=int(value)/1024
if count==0:
szsize=str(value)+"B"
elif count==1:
szsize=str(value)+"K"
elif count==2:
szsize=str(value)+"M"
elif count==3:
szsize=str(value)+"G"
elif count==4:
szsize=str(value)+"T"
return szsize
if __name__ == '__main__':
optlist, args = getopt.getopt(sys.argv[1:],'',[''])
#print args
argvlen=len(args) #参数长度
if argvlen==0 or argvlen>3:
helpmessage()
packagename=args[0] # eg. studynote.rar
strsize=args[1] # eg. 3m or 600k
fileglob=args[2] # eg. "*.jpg"
size=getintsize(strsize) # defined max size of the compressed package
packagenumber=0 # serial
SumSize=0
fileslist=[]
globfileslist=glob.glob(fileglob)
times=0
for file1 in globfileslist:
#print file1
times+=1
filesize=os.path.getsize(file1) # get the size of the file
SumSize=SumSize+int(filesize)
if SumSize<=size: # not bigger than the max size
fileslist.append(file1)
else:
packagenumber+=1
packit(packagename,packagenumber,fileslist)
#print str(getHumansize(SumSize))
SumSize=filesize
fileslist=[]
fileslist.append(file1)
if len(fileslist)>0: # package the left files
packagenumber+=1
packit(packagename,packagenumber,fileslist)
pass
可到 http://download.csdn.net/source/1303870
下载源文件
有时,我们为了打成多个包。如果我们有10个包,不小心掉了一个,那么对方根本就无法解压出来任何信息。
我的程序把文件夹中的多个文件打包成一个独立的压缩文件,这样,即使对方10个文件只拿到5个,那么他也可以解压出文件使用。
本程序特别适合图片打包,尤其是通过网络发给对方,或者是上传到网上的资源。
注:本程序只是调用压缩程序,在使用前最好安装好压缩程序。
#!/usr/bin/python
#coding=utf-8
#makepaceage.py
import getopt
import sys
import glob
import os
def helpmessage():
"""print help message
"""
print "Make package ."
print "Usage1: makepaceage abc.rar 3m /"*.jpg/""
print "1.Filename don't in chinese"
print "2.Format: rar,tgz,bz2,7z "
print ""
sys.exit()
def packit(packagename,serial,fileslist):
"""make a package
@packagename eg. aaa2.rar
@serial the serial of the package eg. 2
@fileslist files list in the package
"""
pos=packagename.rindex(".")
sztempfilename=packagename[:pos] # filename without ext
sztemptype=packagename[pos+1:] # ext
tempname=sztempfilename+str(serial)+"."+sztemptype
#print tempname
makepackage(tempname,fileslist)
def makepackage(packagename,fileslist):
"""make a package
@packagename eg. aaa2.rar
@fileslist files list in the package
"""
pos=packagename.rindex(".")
sztype=packagename[pos+1:]
szcommand=""
flag=1
filesliststring=" ".join(fileslist)
#print packagename
if sztype=="rar" :
szcommand="rar a "+packagename+" "+filesliststring
elif sztype=="gz" or sztype=="tgz":
szcommand= "tar zcvf "+packagename+" "+filesliststring
elif sztype=="7z" :
szcommand= "7z a "+packagename+" "+filesliststring
elif sztype=="bz2" :
szcommand= "tar jcvf "+packagename+" "+filesliststring
else :
szcommand= "other not supported."
flag=0
print szcommand
if flag!=0:
os.system(szcommand)
pass
def getintsize(szsize):
"""get the int size
@szsize, eg. 3m ,3m=3*1024*1024
"""
size1=szsize.strip()
size1=size1.lower()
size1length=len(size1)
size2=size1[:(size1length-1)]
unit=size1[(size1length-1):]
if unit=="b" :
size=size2
elif unit=="k" :
size=int(size2)*1024
elif unit=="m" :
size=int(size2)*1024*1024
else :
size=0
return size
def getHumansize(size):
"""get human reading
@size eg. 1536=1.5k
"""
count=0
value=size
value1=int(value)/1024
while (value1)!=0:
value=value1
count+=1
value1=int(value)/1024
if count==0:
szsize=str(value)+"B"
elif count==1:
szsize=str(value)+"K"
elif count==2:
szsize=str(value)+"M"
elif count==3:
szsize=str(value)+"G"
elif count==4:
szsize=str(value)+"T"
return szsize
if __name__ == '__main__':
optlist, args = getopt.getopt(sys.argv[1:],'',[''])
#print args
argvlen=len(args) #参数长度
if argvlen==0 or argvlen>3:
helpmessage()
packagename=args[0] # eg. studynote.rar
strsize=args[1] # eg. 3m or 600k
fileglob=args[2] # eg. "*.jpg"
size=getintsize(strsize) # defined max size of the compressed package
packagenumber=0 # serial
SumSize=0
fileslist=[]
globfileslist=glob.glob(fileglob)
times=0
for file1 in globfileslist:
#print file1
times+=1
filesize=os.path.getsize(file1) # get the size of the file
SumSize=SumSize+int(filesize)
if SumSize<=size: # not bigger than the max size
fileslist.append(file1)
else:
packagenumber+=1
packit(packagename,packagenumber,fileslist)
#print str(getHumansize(SumSize))
SumSize=filesize
fileslist=[]
fileslist.append(file1)
if len(fileslist)>0: # package the left files
packagenumber+=1
packit(packagename,packagenumber,fileslist)
pass
可到 http://download.csdn.net/source/1303870
下载源文件
相关文章推荐
- Python调用不在同一个文件夹下的Python程序,并且如何解决pyinstaller打包路径问题
- (Java控制台程序版)递归打包整个父文件夹下的文件和子文件夹成压缩文件(*.ZIP)以及打包时常见的文件乱码和文件名乱码以及丢失文件或文件损坏问题解决办法
- python打包压缩文件夹zip+组装文件夹
- 打包python程序(win7(64) +python3.5 + pyqt5 + multiprocess)
- python程序打包成exe执行文件
- python程序打包
- [学习笔记]使用py2exe打包python程序
- albert1017 Linux下压缩某个文件夹(文件夹打包)
- Python程序打包成.exe可执行程序
- 将python程序打包成.exe文件
- Python 3.6打包成EXE可执行程序
- windows系统中python使用rar命令压缩多个文件夹示例
- linux下用python来压缩文件夹
- 怎样用Python打包完成独立运行的exe程序——PyInstaller
- docker搭建python环境并打包镜像然后使用镜像启动python程序和flask程序
- Linux下压缩某个文件夹(文件夹打包)
- Python使用py2exe打包程序介绍
- 一个修改过的python zifile的包装模块,支持对目录压缩(包括空的文件夹),解压缩会解压缩空目录
- 使用PyInstaller打包Python程序
- 关于把python程序打包成exe文件的操作