压缩文件给爹见鬼去吧!

tar.gz.tgz.zip.rar…看到这些莫名奇妙的格式你是不是恨解压软件不够用。这里我要将这些纸老虎一一击溃。

python

参考:https://zhuanlan.zhihu.com/p/150523934
人家写的太好了,只能照搬了。

import tarfile
import zipfile
import rarfile


def uncompress(src_file, dest_dir):
    """解压各种类型的压缩包

    :param src_file: 你要解压的压缩包文件
    :type src_file: file
    :param dest_dir: 你要解压到的目标路径
    :type dest_dir: str
    """

    file_name, file_type = os.path.splitext(src_file.filename)

    try:
        if file_type == '.zip':
            # 需要安装zip包:pip install zipp
            zip_file = zipfile.ZipFile(src_file)
            for names in zip_file.namelist():
                zip_file.extract(names, dest_dir)
            zip_file.close()

        elif file_type == '.rar':
            # 需要安装rar包:pip install rarfile
            rar = rarfile.RarFile(src_file)
            os.chdir(dest_dir)
            rar.extractall()
            rar.close()

        else:
            # file_type == '.tgz' or file_type == '.tar' or file_type == '.gz'
            # Python自带tarfile模块
            tar = tarfile.open(fileobj=src_file)
            for name in tar.getnames():
                tar.extract(name, dest_dir)
            tar.close()

    except Exception as ex:
        return False
    return True

调用示例:

if __name__ == '__main__':

    dest_dir = '你要解压到的目标路径'

    with open('你要解压的压缩包文件路径', 'rb') as src_file:
        result = uncompress(src_file, dest_dir)

注意在linux上解压rar文件需要安装unrar:

$ sudo apt-get install unrar

嫌python太麻烦,那么来看看liux有哪些命令吧!

  1. tar是linux中常用的解压缩命令。tar命令可以处理后缀名为tar, tar.gz, tgz, tar.Z, tar.bz2的文件。
-c # 建立新的压缩文件
-r # 添加文件到已压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-v 显示操作过程
-k 保留源有文件不覆盖
-C 切换到指定目录
-f 指定压缩文件

--delete            删除包中文件
--strip-components  去除目录
--add-file          向包中添加文件
  1. 使用tar归档
tar -cvf test.tar test1.log test2.log # 归档多个文件
tar -cvf test.tar test/* # 归档test目录下的所有文件
tar -cvf test.tar *.log # 归档所有以.log结尾的文件

这种方式不会进行压缩,仅仅做了归档,因此速度极快,同时占用空间也较大
3. 归档并压缩为tar.gz或tar.bz2
tar -zcvf test.tar.gz file1 file2 #打包,并以gzip压缩
tar -jcvf test.tar.bz2 file1 file2 #打包,并以bzip2压缩

  1. 查看压缩包中文件的内容

tar -tvf test.tar

  1. 打包后删除源文件
    tar -zcvf test.tar.gz test.log --remove-files

太长了 懒得抄了,请参考:
https://www.cnblogs.com/rsty/p/10443749.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值