文档章节

核心编程第九章(续)

YuXingY
 YuXingY
发布于 2016/05/02 13:30
字数 497
阅读 3
收藏 0

9-20

# example of compressing a gzip file

import gzip

inF = file("x.txt", 'rb')
s = inF.read()
inF.close()

outF = gzip.GzipFile("x.txt.gz", 'wb')
outF.write(s)
outF.close()

# example of decompressing a gzip file

inf = gzip.GzipFile('x.txt.gz')
s = inf.read()
inf.close()

outf = open('x.txt', 'wb')
outf.write(s)
outf.close()

# example of compressing a bzip2 file
import bz2

inf = open('e:\\yan.txt')
s = inf.read()
inf.close()

outf = bz2.BZ2File('e:\\yan.txt.bzip2', 'wb')
outf.write(s)
outf.close()
print 'done'

# example of decompressing a bzip2 file

inf = bz2.BZ2Compressor('x.txt.bzip2')
s = inf.read()
inf.close()

outf = open('x.txt', 'wb')
outf.write(s)
outf.close()

9-21

import zipfile


def dowithzip():
    prompt = '''
A: add a file to archive
B: extract a file from archive
C: create a zip archive

Enter your choice: '''

    while True:
        try:
            choice = raw_input(prompt).strip().lower()
        except (EOFError, KeyboardInterrupt):
            choice = 'q'

        if choice not in 'abc':
            print 'Wrong input, try again'
        else:
            break

    filename = raw_input('your zipfile name: ')
    if choice == 'a':
        f = zipfile.ZipFile(filename, 'a')
        f.write(raw_input('file you want to add: '))
    elif choice == 'b':
        f = zipfile.ZipFile(filename)
        f.extract(raw_input('file you want to extract: '), raw_input('extract-to path: '))
    else:
        f = zipfile.ZipFile(filename, 'w')

    f.close()
    print 'done'

dowithzip()

9-22

import zipfile


def lszip():
    zipfilename = raw_input('your zip-file name: ')
    thezipfile = zipfile.ZipFile(zipfilename)
    thenamelist = thezipfile.namelist()

    theinfolist = thezipfile.infolist()
    filenum = len(theinfolist)
    for i in range(filenum):
        print "{0}'s size is {1}".format(thenamelist[i], theinfolist[i].compress_size)
        print "{0}'s compression ratio: {1:.3f}".format(thenamelist[i],
                                                        float(theinfolist[i].compress_size) / theinfolist[i].file_size)
        print "timestamp: {0}".format(theinfolist[i].date_time)


lszip()

9-23

import tarfile
import os.path


def lszip():
    tarfilename = raw_input('your tar-file name: ')
    basename = os.path.splitext(tarfilename)[1]
    thetarfile = tarfile.open(tarfilename, 'r:' + basename[1:])
    thenamelist = thetarfile.getnames()

    theinfolist = thetarfile.getmembers()
    filenum = len(theinfolist)
    for i in range(filenum):
        print "{0}'s size is {1}".format(thenamelist[i], theinfolist[i].size)
        print "timestamp: {0}".format(theinfolist[i].mtime)

lszip()

9-24

import zipfile
import tarfile
import os.path


def movefile():
    filefrom = raw_input('the file is from(the compressed file name): ')
    fileto = raw_input('move the file to(the compressed file name): ')

    # open the file
    if filefrom.endswith('.zip'):
        ffrom = zipfile.ZipFile(filefrom, 'r')
        fto = zipfile.ZipFile(fileto, 'w')
    else:
        # support .tar.gz and .tar.bz2 file
        basename1 = os.path.splitext(filefrom)[1]
        basename2 = os.path.splitext(fileto)[1]
        ffrom = tarfile.open(filefrom, 'r:' + basename1[1:])
        fto = tarfile.open(fileto, 'w:' + basename2[1:])

    # extract the file
    thefile = ffrom.extract(raw_input('file to extract: '))

    # move the file
    if fileto.endswith('.zip'):
        fto.write(thefile)
    else:
        fto.add(thefile)

    ffrom.close()
    fto.close()

movefile()

9-25

import tarfile
import zipfile
import os
import os.path

adic = {'.zip': zipfile.ZipFile,
        '.tar.gz': tarfile.open,
        '.tar.bz2': tarfile.open,
        '.tgz': tarfile.open,
        '.tbz': tarfile.open}

bdic = {'.zip': 'r',
        '.tar.gz': 'r:gz',
        '.tar.bz2': 'r:bz2',
        '.tgz': 'r:gz',
        '.tbz': 'r:bz2',
        '.tar.bzip2': 'r:bz2'}


# .gz or .bz2 file is not archive file
def decompressfile(directory, archive):
    num = len(archive)
    for i in range(num):
        archivefile_name = archive[i]
        archivefile_base = '.' + archivefile_name.split('.', 1)[1]
        archivefile = adic[archivefile_base](archivefile_name, bdic[archivefile_base])

        if i == 0:
            archivefile.extractall(directory)
        else:
            os.chdir(directory)
            os.mkdir(archivefile_name.split('.')[0])
            archivefile.extractall(archivefile_name.split('.')[0])

        archivefile.close()
        print 'done'


© 著作权归作者所有

YuXingY
粉丝 1
博文 44
码字总数 18413
作品 0
太原
私信 提问
微软面试、经典算法、编程艺术、红黑树4大系列总结

无私分享,造福天下 以下是本blog内的微软面试100题系列,经典算法研究系列,程序员编程艺术系列,红黑树系列4大经典原创系列作品与一些重要文章的集锦。 一、微软面试100题系列 横空出世,席...

长平狐
2013/01/06
395
0
我心中的核心组件(可插拔的AOP)~大话开篇及目录

核心组件 我心中的核心组件,核心组件就是我认为在项目中比较常用的功能,如日志,异常处理,消息,邮件,队列服务,调度,缓存,持久化,分布式文件存储,NoSQL存储,IoC容器,方法拦截等等...

mcy247
2017/12/05
0
0
javascript入门经典【推荐】—新手必备、零基础学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a125138/article/details/7819466 本书目录 第一章: JavaScript语言基础第二章: JavaScript内置对象 第三章...

续写经典
2012/08/01
0
0
13篇文章,教你学会ES6知识点

ES6 深入理解ES6》学习笔记 本文用于汇总链接到各个子章节的内容,github 欢迎大家题issues和PR,如果对你有帮助,也可以给 star 支持 :) 目录 第一章 块级绑定 第二章 字符串和正则表达式 ...

你听___
2018/05/08
0
0
【备忘】2018年最新FFmpeg音视频教程视频

百度网盘 第一章 音视频行业的前景及应用场景第二章 FFmpeg处理流程及常用命令第三章 FFmpeg之C语言及VIM第四章 FFmpeg之C语言基础第五章 FFmpeg多媒体文件处理第六章 FFmpeg编解码案例第七章...

javail
2018/11/08
223
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部