精华内容
下载资源
问答
  • 多个文件夹分别压缩
    千次阅读
    2021-05-09 08:18:36

    这里讨论使用Python解压如下五种压缩文件:

    .gz .tar .tgz .zip .rar

    简介gz: 即gzip,通常只能压缩一个文件。与tar结合起来就可以实现先打包,再压缩。

    tar: linux系统下的打包工具,只打包,不压缩

    tgz:即tar.gz。先用tar打包,然后再用gz压缩得到的文件

    zip: 不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar。

    rar:打包压缩文件,最初用于DOS,基于window操作系统。压缩率比zip高,但速度慢,随机访问的速度也慢。

    关于zip于rar之间的各种比较,可见:

    http://www.comicer.com/stronghorse/water/software/ziprar.htm

    gz由于gz一般只压缩一个文件,所有常与其他打包工具一起工作。比如可以先用tar打包为XXX.tar,然后在压缩为XXX.tar.gz

    解压gz,其实就是读出其中的单一文件,Python方法如下:

    [python] view plain copyimport gzip import os def un_gz(file_name):

    """ungz zip file"""

    f_name = file_name.replace(".gz", "")

    #获取文件的名称,去掉

    g_file = gzip.GzipFile(file_name)

    #创建gzip对象

    open(f_name, "w+").write(g_file.read())

    #gzip对象用read()打开后,写入open()建立的文件中。

    g_file.close()

    #关闭gzip对象

    tarXXX.tar.gz解压后得到XXX.tar,还要进一步解压出来。

    *注:tgz与tar.gz是相同的格式,老版本DOS扩展名最多三个字符,故用tgz表示。

    由于这里有多个文件,我们先读取所有文件名,然后解压,如下:

    [python] view plain copyimport tarfile def un_tar(file_name):

    untar zip file"""

    tar = tarfile.open(file_name)

    names = tar.getnames()

    if os.path.isdir(file_name + "_files"):

    pass

    else:

    os.mkdir(file_name + "_files")

    #由于解压后是许多文件,预先建立同名文件夹

    for name in names:

    tar.extract(name, file_name + "_files/")

    tar.close()

    *注:tgz文件与tar文件相同的解压方法。

    zip与tar类似,先读取多个文件名,然后解压,如下:

    [python] view plain copyimport zipfile def un_zip(file_name):

    """unzip zip file"""

    zip_file = zipfile.ZipFile(file_name)

    if os.path.isdir(file_name + "_files"):

    pass

    else:

    os.mkdir(file_name + "_files")

    for names in zip_file.namelist():

    zip_file.extract(names,file_name + "_files/")

    zip_file.close()

    rar因为rar通常为window下使用,需要额外的Python包rarfile。

    可用地址: http://sourceforge.net/projects/rarfile.berlios/files/rarfile-2.4.tar.gz/download

    解压到Python安装目录的/Scripts/目录下,在当前窗口打开命令行,

    输入Python setup.py install

    安装完成。

    [python] view plain copyimport rarfile import os def un_rar(file_name):

    """unrar zip file"""

    rar = rarfile.RarFile(file_name)

    if os.path.isdir(file_name + "_files"):

    pass

    else:

    os.mkdir(file_name + "_files")

    os.chdir(file_name + "_files"):

    rar.extractall()

    rar.close()

    tar打包在写打包代码的过程中,使用tar.add()增加文件时,会把文件本身的路径也加进去,加上arcname就能根据自己的命名规则将文件加入tar包打包代码:

    !/usr/bin/env /usr/local/bin/python

    # encoding: utf-8 import tarfile import os import time

    start = time.time() tar=tarfile.open('/path/to/your.tar,'w') for root,dir,files in os.walk('/path/to/dir/'):

    for file in files:

    fullpath=os.path.join(root,file)

    tar.add(fullpath,arcname=file)

    tar.close() print time.time()-start

    在打包的过程中可以设置压缩规则,如想要以gz压缩的格式打包tar=tarfile.open('/path/to/your.tar.gz','w:gz')其他格式如下表:tarfile.open的mode有很多种:mode action'r' or 'r:*' Open for reading with transparent compression (recommended).'r:' Open for reading exclusively without compression.'r:gz' Open for reading with gzip compression.'r:bz2' Open for reading with bzip2 compression.'a' or 'a:' Open for appending with no compression. The file is created if it does not exist.'w' or 'w:' Open for uncompressed writing.'w:gz' Open for gzip compressed writing.'w:bz2' Open for bzip2 compressed writing.

    tar解包tar解包也可以根据不同压缩格式来解压。

    !/usr/bin/env /usr/local/bin/python

    # encoding: utf-8 import tarfile import time

    start = time.time() t = tarfile.open("/path/to/your.tar", "r:") t.extractall(path = '/path/to/extractdir/') t.close() print time.time()-start

    上面的代码是解压所有的,也可以挨个起做不同的处理,但要如果tar包内文件过多,小心内存哦~tar = tarfile.open(filename, 'r:gz') for tar_info in tar:

    file = tar.extractfile(tar_info)

    do_something_with(file)

    更多相关内容
  • 用7z命令压缩多个文件夹和文件

    千次阅读 2020-11-10 11:53:36
    《用7z命令压缩文件夹》 https://blog.csdn.net/cpdoor2163_com/article/details/109580529 修改出新的压缩命令,CompressCommand2.bat,的内容: :: For compress, set source folder, target folder and target ...

    压缩目标:
    文件夹:Folder1
    文件:Folder2\Folder2_File2.txt
    文件夹:Folder3

    参考之前的文章:
    《用7z命令压缩文件夹》
    https://blog.csdn.net/cpdoor2163_com/article/details/109580529

    修改出新的压缩命令,CompressCommand2.bat,的内容:
    :: For compress, set source folder, target folder and target file name
    set sourceFolderPath1=D:\cpWorkZone\Practice\CompressCommand\SourceFolder
    set targetFolderPath1=D:\cpWorkZone\Practice\CompressCommand\BackupFolder
    set targetFileName1=SourceFolder

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    set currentTimeString1=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
    set targetFilePath1=%targetFolderPath1%\%targetFileName1%_%currentTimeString1%.7z
    :: echo %targetFilePath1%

    7z.exe.lnk a -t7z %targetFilePath1% %sourceFolderPath1%\Folder1 %sourceFolderPath1%\Folder2\Folder2_File2.txt %sourceFolderPath1%\Folder3

    pause

    压缩完成,生成SourceFolder_2020-11-10_11_15_47.7z。
    解压出来,发现压缩的文件夹和文件都“顶”到当前根目录上了:
    D:\cpWorkZone\Practice\CompressCommand\BackupFolder\SourceFolder_2020-11-10_11_15_47>tree /F
    卷 D_HDD_931 的文件夹 PATH 列表
    卷序列号为 5264-1BBA
    D:.
    │  Folder2_File2.txt

    ├─Folder1
    │      Folder1_File1.txt

    └─Folder3
            Folder3_File1.txt
            Folder3_File2.txt
            Folder3_File3.txt

    虽然也能用,但是缺少了源目录的目录结构,当然确实可以使用“tree /F > FolderTree.txt”把目录结构保存到FolderTree.txt文本文件里保存起来,不过,操作有点繁琐。

    用7z命令压缩多个文件夹和文件,并保留完整源目录路径到压缩包的方法:
    1.
    添加SourceFileList.txt,这里记录了需要压缩的源目录文件夹和文件的目录路径,内容:
    D:\cpWorkZone\Practice\CompressCommand\SourceFolder\Folder1
    D:\cpWorkZone\Practice\CompressCommand\SourceFolder\Folder2\Folder2_File2.txt
    D:\cpWorkZone\Practice\CompressCommand\SourceFolder\Folder3

    2.
    使用7z的“-spf”开关,和“@listfile”开关,创建CompressCommand5.bat,的内容:
    :: For compress, set source file list, target folder and target file name
    set sourceFileList=D:\cpWorkZone\Practice\CompressCommand\CompressCommandFolder\SourceFileList.txt
    set targetFolderPath=D:\cpWorkZone\Practice\CompressCommand\BackupFolder
    set targetFileName=TargetFile

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    set currentDateYear=%date:~0,4%
    set currentDateMonth=%date:~5,2%
    set currentDateDay=%date:~8,2%

    set timeTemp=%time: =0%
    set currentTimeHour=%timeTemp:~0,2%
    set currentTimeMinute=%time:~3,2%
    set currentTimeSecond=%time:~6,2%

    set currentTimeString=%currentDateYear%-%currentDateMonth%-%currentDateDay%_%currentTimeHour%_%currentTimeMinute%_%currentTimeSecond%
    :: echo %currentTimeString%

    set targetFilePath=%targetFolderPath%\%targetFileName%_%currentTimeString%.7z
    :: echo %targetFilePath%

    7z.exe.lnk a -t7z %targetFilePath% -spf @%sourceFileList%

    pause

    3.
    运行压缩命令,创建出来压缩包SourceFolder_2020-11-10_11_44_55.7z,解压可以看到:
    D:\cpWorkZone\Practice\CompressCommand\BackupFolder\SourceFolder_2020-11-10_11_44_55>tree /F
    卷 D_HDD_931 的文件夹 PATH 列表
    卷序列号为 5264-1BBA
    D:.
    └─D_
        └─cpWorkZone
            └─Practice
                └─CompressCommand
                    └─SourceFolder
                        ├─Folder1
                        │      Folder1_File1.txt
                        │
                        ├─Folder2
                        │      Folder2_File2.txt
                        │
                        └─Folder3
                                Folder3_File1.txt
                                Folder3_File2.txt
                                Folder3_File3.txt

    这个压缩包里保留了源目录的完整路径。

    参考:
    a.
    《Command Line Syntax》的List file
    https://sevenzip.osdn.jp/chm/cmdline/syntax.htm

    b.
    7z命令帮助:
    7-Zip 18.06 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-12-30

    Usage: 7z <command> [<switches>...] <archive_name> [<file_names>...]

    <Commands>
      a : Add files to archive
      b : Benchmark
      d : Delete files from archive
      e : Extract files from archive (without using directory names)
      h : Calculate hash values for files
      i : Show information about supported formats
      l : List contents of archive
      rn : Rename files in archive
      t : Test integrity of archive
      u : Update files to archive
      x : eXtract files with full paths

    <Switches>
      -- : Stop switches parsing
      @listfile : set path to listfile that contains file names
      -ai[r[-|0]]{@listfile|!wildcard} : Include archives
      -ax[r[-|0]]{@listfile|!wildcard} : eXclude archives
      -ao{a|s|t|u} : set Overwrite mode
      -an : disable archive_name field
      -bb[0-3] : set output log level
      -bd : disable progress indicator
      -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
      -bt : show execution time statistics
      -i[r[-|0]]{@listfile|!wildcard} : Include filenames
      -m{Parameters} : set compression Method
        -mmt[N] : set number of CPU threads
        -mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra)
      -o{Directory} : set Output directory
      -p{Password} : set Password
      -r[-|0] : Recurse subdirectories
      -sa{a|e|s} : set Archive name mode
      -scc{UTF-8|WIN|DOS} : set charset for for console input/output
      -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
      -scrc[CRC32|CRC64|SHA1|SHA256|*] : set hash function for x, e, h commands
      -sdel : delete files after compression
      -seml[.] : send archive by email
      -sfx[{name}] : Create SFX archive
      -si[{name}] : read data from stdin
      -slp : set Large Pages mode
      -slt : show technical information for l (List) command
      -snh : store hard links as links
      -snl : store symbolic links as links
      -sni : store NT security information
      -sns[-] : store NTFS alternate streams
      -so : write data to stdout
      -spd : disable wildcard matching for file names
      -spe : eliminate duplication of root folder for extract command
      -spf : use fully qualified file paths
      -ssc[-] : set sensitive case mode
      -sse : stop archive creating, if it can't open some input file
      -ssw : compress shared files
      -stl : set archive timestamp from the most recently modified file
      -stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
      -stx{Type} : exclude archive type
      -t{Type} : Set type of archive
      -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
      -v{Size}[b|k|m|g] : Create volumes
      -w[{path}] : assign Work directory. Empty path means a temporary directory
      -x[r[-|0]]{@listfile|!wildcard} : eXclude filenames
      -y : assume Yes on all queries

    c.
    《Need leading zero for batch script using %time% variable》
    https://serverfault.com/questions/147515/need-leading-zero-for-batch-script-using-time-variable

    d.
    《String processing in windows batch files: How to pad value with leading zeros?》
    https://stackoverflow.com/questions/13398545/string-processing-in-windows-batch-files-how-to-pad-value-with-leading-zeros

    展开全文
  • 全选所有文件夹,然后右击添加到压缩文件,然后在文件选项中勾选把每文件放到单独的压缩文件中  OK了
    全选所有文件夹,然后右击添加到压缩文件,然后在文件选项中勾选把每个文件放到单独的压缩文件中

     

    OK了

     

    展开全文
  • 我们有很多文件夹需要打包成 ZIP 和 7z 压缩包,我们平常最常见的就是自己手工将一些文件夹打包成一个独立的 ZIP 和 7z 压缩包,但是我们有时候也需要将很多个文件夹单独打包成单个 ZIP 和 7z 压缩包。 比如说我们...

    概要:我们有时候需要将很多不同类型的文件夹单独打包成一个 ZIP 压缩包或者单独的打包成一个 7z 压缩包,我们一个一个处理的话比较慢,但是有没有一种批量将文件夹转成 ZIP 和 7z 压缩包的方法呢?

    我们有很多文件夹需要打包成 ZIP 和 7z 压缩包,我们平常最常见的就是自己手工将一些文件夹打包成一个独立的 ZIP 和 7z 压缩包,但是我们有时候也需要将很多个文件夹单独打包成单个 ZIP 和 7z 压缩包。

    比如说我们有 100 个文件夹,我们需要打包成 100 个 ZIP 和 7z 压缩包。这些压缩包可以是 100 个 ZIP 压缩包,也可以是 100 个 7z 压缩包。以前我们没有很好的办法去批量的将文件夹转成 ZIP 和 7z 压缩包的格式,但是现在我们可以使用这个方法批量将很多个文件夹打包成单独的 ZIP 和 7z 压缩包。

    首先我们打开「我的ABC软件工具箱」,进入到文件夹转成压缩包的功能,如下图:

    在这里我们需要添加批量打包成 ZIP 和 7z 压缩包的文件夹:

    当我们添加完需要批量转换为 ZIP 和 7z 压缩包格式的文件夹之后,直接单击下一步,那么我们就可以批量设置最终压缩包的格式是 ZIP 还是 7z ,我们还可以批量的设置 ZIP 和 7z 压缩包的密码。

    这对我们平常的文件夹管理来说非常的方便,这样我们就不用手工的将一个一个的文件夹转成 ZIP 和 7z 压缩包文件了。有了这个方法之后,我们就可以大量的生成 ZIP 和 7z 压缩包文件,并且还可以批量的设置这些 ZIP 和 7z 压缩包文件的密码。

    这对我们平常的文件夹管理来说非常的方便,这样我们就不用手工的将一个一个的文件夹转成 ZIP 和 7z 压缩包文件了。有了这个方法之后,我们就可以大量的生成 ZIP 和 7z 压缩包文件,并且还可以批量的设置这些 ZIP 和 7z 压缩包文件的密码。

    展开全文
  • C#压缩解压(可任意选择多个文件夹,文件一起压缩);BackgroundWorker配合进度条的使用-附件资源
  • 该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除文件夹directoryName 下需要被压缩的文件。 package com.chuangqi.tools; import java.io.File; import java.io.FileInputStream; import java.io....
  • tar在linux上是常用的打包、压缩、加压缩工具,他的参数很,这篇文章仅仅列举常用的压缩与解压缩参数,下面直接先上三常用命令,一起来看看吧 1、压缩当前目录下文件夹/文件test到test.tar.gz: tar -zcvf test...
  • } public static void zipDir(String directoryName, ZipOutputStream zos, String basePath) { /** * 该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除文件夹directoryName 下需要被压缩的文件。...
  • 使用rar压缩指定文件夹下的多个文件夹 使用rar压缩指定文件夹下的多个文件夹
  • 在.Net Framework 2.0 中添加了System.IO.Compression 类来实现对文件/文件夹压缩/解压(GZipStream方法),包括文档,代码,类文件
  • 例如: 我们以tomcat 为例,打包的时候我们要排除 tomcat/logs 目录,命令...如果要排除多个目录,增加 --exclude 即可,如下命令排除logs和libs两个目录及文件xiaoshan.txt: tar -zcvf tomcat.tar.gz --exclud...
  • java 压缩/解压 zip 多个文件和文件夹

    万次阅读 热门讨论 2018-03-12 09:58:32
    参考了几篇文章,基本都是压缩单个文件或者一个文件夹,不能混合压缩。 找了一个不需要额外jar包的代码上改的。(参考文章) 不需要额外jar包。 压缩方法: import java.io.File; import java.io.FileInputStream; ...
  • Linux压缩多个文件或者文件夹的命令

    万次阅读 2017-05-16 17:51:42
    tar -czvf a.tar.gz(想压缩文件名) 源文件名1 源文件名2 源文件夹1 源文件夹2
  • 3.点击“文件”后,跳转界面如下图所示,选择“把每个文件夹放到单独的压缩文件中”,点击“追加”然后全选所有文件, 如果要进行其他操作,可以选择“要排除的文件” “不压缩直接存储的文件” “文件路径” 4....
  • 多文件夹压缩文件批量解压

    千次阅读 2019-07-18 14:40:26
    最近需要使用到同一根目录下多文件夹中的压缩文件,发现数量庞大,不便于手动解压,遂网上搜索解决方案。 找到了一教程,稍作修改,可以使用,记录一下。 Windows10、 winRAR 新建".txt"文件代码如下: @echo ...
  • 主要介绍了使用java API实现zip递归压缩文件夹及解压,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 如果想把它们解压缩到同一个文件夹(举例名为unzipped),命令为: unzip '*.zip' -d unzipped *可以根据共同前后缀灵活运用。   但是这样我还是不满意。 在同一个文件夹后,解压做的1.zip, 2....
  • java压缩文件夹

    2013-05-23 11:09:17
    java压缩文件夹文件夹名称和文件名称支持中文
  • C#实现将文件、文件夹压缩为压缩包

    千次阅读 2021-07-16 22:00:30
    一、C#实现将文件、文件夹压缩为压缩包核心 /*** * Title:"基础工具" 项目 * 主题:压缩包帮助类 * Description: * 功能:【该压缩方法来自:https://www.cnblogs.com/Chary/p/No0000DF.html】 * 1、创建 ...
  • Linux中批量压缩文件夹

    千次阅读 2020-07-21 10:26:08
    多个文件夹压缩在同一个压缩包 tar -zcvf test.tar.gz test1 test2 或者: for i in `find ./* -type d`;do zip $i.zip ./$i/*;done 'find ./* -type d' 表示查找所有文件夹,-type d就表示指定文件夹类型,...
  • 如,下图操作,任意选择要压缩文件夹,文件,设置压缩后保存的文件,点压缩按钮 执行效果如下 执行完的test1.zip 压缩需要引用using ICSharpCode.SharpZipLib.Zip; 可在...
  • Java压缩文件和文件夹为zip格式

    千次阅读 2021-03-03 17:26:25
    public class ZipUtils { /** * * 文件夹压缩成ZIP * * @param srcDir 压缩文件夹路径 * @param out 压缩文件输出流 * @param keepDirStructure 是否保留原来的目录结构,true:保留目录结构; * * false:所有文件跑到...
  • C#多文件夹压缩

    千次阅读 2017-12-17 09:59:25
    说明:依赖于ICSharpCode.SharpZipLib.dll 1、直接上代码了(仅作参考) /// <... /// 调用压缩文件 /// </summary> /// <returns></returns> public ActionResult...
  • -c 建立一个压缩文件的参数指令(create) –压缩-x 解开一个压缩文件的参数指令(extract) –解压-z 是否需要gzip压缩-v 显示压缩的过程(verbose)-f 使用档名,在f之后要立即接档名(file) 压缩: tar -zcvf 文件名 ...
  • 问题:某漫画软件只认zip档案,提前解压成图片的漫画文件夹要再压回zip 解决办法:xargs 传参数 步骤: 1.进入目录 2.执行下列命令 ls |xargs -i -execdir zip -r '{}.zip' '{}' \;
  • filepath = os.path.join(root, filename) file_paths.append(filepath) # 返回所有文件路径 return file_paths def main(): # 要压缩文件夹名 directory = '齐普夫定律' file_paths = get_all_file_paths...
  • 代码MFC工程应用是自己写的,文件夹压缩与解压LIB主要是根据:csdn论坛的itloverwm 的资源使用ZLIB库压缩解压源码(支持多级文件夹压缩和解压),地址是:http://download.csdn.net/detail/itloverwm/3928457 上...
  • js压缩文件或文件夹

    千次阅读 2021-10-22 11:14:25
    JS压缩文件/文件夹 首先说一下,这里的 JS压缩文件/文件夹 不是各位想的那么美好????,想着接下来博主写js的压缩方法,我拷贝走直接用就万事大吉的同志,很遗憾告诉你们,这篇博客说的不是这样的。 文章有点长,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 222,463
精华内容 88,985
关键字:

多个文件夹分别压缩