Python解压.zip文件

Posted 风语轻轻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于Python解压.zip文件的主要内容,如果未能解决你的问题,请参考以下文章

python-----自动解压并删除zip文件

Python调用7zip命令实现解压

python怎样压缩和解压缩ZIP文件

python 解压 zip 文件

Python解压.zip文件

python用zipfile模块打包文件或是目录解压zip文件实例