Python解压.zip文件

 1 ‘‘‘ 解压一个.zip文件或一个目录下的所有.zip文件到指定目录。
 2
 3     运行方法:
 4     格式:
 5         python unzip.py "source_dir" "dest_dir" password
 6     参数说明:
 7         source_dir和dest_dir既可以绝对路径也可以为相对路径。用""将它们括起为了防止路径中出现空格。
 8         source_dir和dest_dir的缺省值表示当前目录。
 9         password缺省表示压缩文件未加密。
10     注意:
11         1. 若目录太长,可以将上述语句直接写入.bat脚本,然后运行脚本。
12         2. 密码的编码格式为“utf-8”,且不支持WinRAR中zip格式的默认加密算法--CBC模式下的AES-256。
13            若想要WinRAR加密压缩的.zip文件能用本程序顺利解压,请在加密压缩时勾选“ZIP传统加密”。
14 ‘‘‘
15
16 import sys, os, zipfile
17
18 def unzip_single(src_file, dest_dir, password):
19     ‘‘‘ 解压单个文件到目标文件夹。
20     ‘‘‘
21     if password:
22         password = password.encode()
23     zf = zipfile.ZipFile(src_file)
24     try:
25         zf.extractall(path=dest_dir, pwd=password)
26     except RuntimeError as e:
27         print(e)
28     zf.close()
29
30 def unzip_all(source_dir, dest_dir, password):
31     if not os.path.isdir(source_dir):    # 如果是单一文件
32         unzip_single(source_dir, dest_dir, password)
33     else:
34         it = os.scandir(source_dir)
35         for entry in it:
36             if entry.is_file() and os.path.splitext(entry.name)[1]==‘.zip‘ :
37                 unzip_single(entry.path, dest_dir, password)
38
39 if __name__ == "__main__":
40
41     # 获取源路径和目标路径
42     source_dir = os.getcwd()
43     dest_dir = os.getcwd()
44     password = None
45     if len(sys.argv) == 2: # 指定了压缩文件所在路径
46         source_dir = sys.argv[1]
47     if len(sys.argv) == 3: # 压缩文件所在和解压到路径均指定
48         source_dir, dest_dir = os.path.abspath(sys.argv[1].strip(‘"‘)), os.path.abspath(sys.argv[2].strip(‘"‘))
49     if len(sys.argv) == 4: # 还指定了密码
50         source_dir, dest_dir, password =  os.path.abspath(sys.argv[1].strip(‘"‘)), os.path.abspath(sys.argv[2].strip(‘"‘)), sys.argv[3]
51     if len(sys.argv) > 4:
52         print(‘过多的参数,可能是路径中有空白字符,请用""将路径括起。‘)
53         exit()
54
55     print("源目录:", source_dir)
56     print("解压到:", dest_dir)
57     print("解压密码:", password)
58
59     # 判断源路径是否合法
60     if not os.path.exists(source_dir):
61         print("压缩文件或压缩文件所在路径不存在!")
62         exit()
63     if not os.path.isdir(source_dir) and not zipfile.is_zipfile(source_dir):
64         print("指定的源文件不是一个合法的.zip文件!")
65         exit()
66
67     # 如果解压到的路径不存在,则创建
68     if not os.path.exists(dest_dir):
69         os.mkdir(dest_dir)
70
71     unzip_all(source_dir, dest_dir, password)

原文地址:https://www.cnblogs.com/fyqq0403/p/9710420.html

时间: 2024-08-27 01:32:16

Python解压.zip文件的相关文章

python 解压 zip 文件

python 解压压缩包 使用 python 的 zipfile 模块 对同一目录下的所有 zip 文件解压,也可以指定解压文件名 import os import sys import zipfile def unzip(filename: str): try: file = zipfile.ZipFile(filename) dirname = filename.replace('.zip', '') # 如果存在与压缩包同名文件夹 提示信息并跳过 if os.path.exists(dir

android zip4j之--解压zip文件并实时显示解压进度

Zip文件是我们经常用到压缩文件格式,android中在进行网络请求大批量数据时,通常会采用传递zip文件,这样做即可以减少网络流量的消耗,加快请求的响应速度,又可以减少对存储空间的要求,所以当我们将zip文件读取回来的时候,如何解压就是一个要解决的问题,虽然java本身提供了zip相关的API,但不是很强大,所以我们采用apache开源组织的zip4j,通过这个jar包可以十分轻松的解压zip文件. 回到项目中去,项目中有个需求是从服务器请求杂志,请求回来后给读者展示,但是由于公司自己做的电子

通过javascript在网页端解压zip文件并查看压缩包内容

WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代码很多, 而且包含大副的图片,那么就可以把js和css和jpg和png等各种数据通过服务端打包成zip传送到浏览器, 浏览器负责解压, css实用动态生成插入到dom中,js也用globalEval直接执行, jpg或者png各种图片文件由blob流转化为image, 直接插入到浏览器中: html

ubuntu解压zip文件中文乱码问题

通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip 注:xxx.zip为需要解压的文件名 ubuntu解压zip文件中文乱码问题

基于Android下载并解压Zip文件,更新UI简单帮助类

类似于:http://blog.csdn.net/jarlen/article/details/44794031 下载文件: /** * 下载文件 * * @param down_url * @param output * @param tmpDir */ private void download(String down_url, File output, File tmpDir) { InputStream inputStream = null; OutputStream outputStr

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载

PHP扩展类ZipArchive实现压缩解压Zip文件和文件打包下载 http://my.oschina.net/junn/blog/104464 PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流.这里整理一下常用的示例供参考. 一.解压缩zip文件 ? 1 2 3 4 5 6 7 8 9 10 11 $zip = new ZipAr

Ubuntu中解决解压zip文件中文乱码问题

1. 通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip (用GBK, GB18030也可以) 有趣的是unzip的manual中并无这个选项的说明, unzip --help对这个参数有一行简单的说明. 2. 在环境变量中,指定unzip参数,总是以指定的字符集显示和解压文件 /etc/environment中加入2行 UNZIP="-O CP936" ZIPINFO="-O CP936"Ubuntu中解决解压zip文件中文乱码问题

php解压zip文件

php实现解压zip文件 1 function zip($filename, $path) 2 { 3 // $filename = 'test.zip'; 4 // $path = './document/2016-05-11/test.zip'; 5 $path_all = $_SERVER['DOCUMENT_ROOT'] . sp_get_asset_upload_path(mb_substr($path, 2));//think_cmf的获取文件路劲 6 $file_name_head

Java 上传解压zip文件,并且解析文件里面的excel和图片

需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读,我把代码全部写到Controller里面.这个demo的file入参的类型是MultipartFile,很多网上的例子是File类型.这两个类型在解析文件的时候还是有点区别的. 第①个方法: 1 /** 2 * 这个deomo入参的类型是MultipartFile,很多网上的例子是File类型 3