求问解压多层目录如何才能解压到各自所在文件夹
通过使用 7za.exe x -r 参数只能解压到统一目录
如
a/b/c/c1.zip
a/b/c/c2.zip
a/a1.zip
使用 " 7za.exe x -r a/ " 命令会得到
a/c1.txt c2.txt a1.txt
如何才能解压到各自原本所在的文件夹
a/b/c/c1.txt
a/b/c/c2.txt
a/a1.txt
-o 指定输出路径,如a/b/c/c1.zip,用7z x a/b/c/c1.zip -oa/b/c,注意-o和路径之间不要有空格
$ 7z --help
Usage: 7z [...] [...]
[<@listfiles...>]
常用的command如下:
a 添加文件到压缩文件
d 从压缩文件中删除文件
e 从压缩文件中解压缩文件,不包含目录结构
l 列出压缩包中的内容
t 测试压缩文件
u更新文件到压缩文件
x从压缩文件中解压缩,包含目录结构 注意看这里
全压缩:
7zr a -t7z temp.7z ziptest/
排除bbb目录,所有的,任何目录下的bbb目录:
7zr a -t7z temp.7z ziptest/ -xr!bbb
排除bbb文件,所有的,任何目录下的bbb文件:
7zr a -t7z temp.7z ziptest/ -x!bbb
排除.svn目录:
7zr a -t7z temp.7z ziptest -xr!.svn
7zip排除目录的路径里不能用当前目录 . ,如 -xr!./.svn,会过滤失败, .svn 还会压缩进去。
也可以把要排除的目录路径写入文件,例如:
ziptest/.svn
7zr a -t7z temp.7z ziptest/ -xr@ziptest_x.txt
如果是排除的是文件,把要排除的各个文件名写入一个文件,用 -x@x_fn.txt 就可以排除所写文件。
$ 7z a study.7z study/ ~ 将study整个目录添加到压缩包study.7z中
$ 7z t study.7z ~ 测试压缩包
$ 7z x study.7z ~ 解压缩包到当前目录
$ 7z d study.7z study/d2/f2.php ~ 删除压缩包中的指定文件
$ 7z t study.7z ~ 测试压缩包
$ 7z l study.7z ~ 查看压缩包中的目录结构
$ 7z u study.7z study/d1/d11/f1.c ~ 更新压缩包中的指定文件
$ 7z l study.7z ~ 查看压缩包中的目录结构
下载的一个python学习资料,打开以后将近100的zip包,单独手动解压太麻烦了,就想到了代码解决,不得不说一句,懒则思变啊下面是用python对文件夹进行循环读取,并解压到原路径下
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import zipfile
import os
"""
@attention:
"""
#获取文件文件目录下所有文件名,并放到list中
def upzip(path):
file_list = os.listdir(path)
zip_list = []
for file_name in file_list:
zip_name = os.path.join(path,file_name)
zip_list.append(zip_name)
for_list(zip_list)
#print(zip_list)
'''#遍历list'''
def for_list(list):
print("遍历文件名")
for name in list:
if ".zip" in name:
#print("文件名为: " + name)
unzip(name)
'''解压文件'''
def unzip(filename):
#print("解压文件开始")
if os.path.splitext(filename)[1] != '.zip':
pass
else:
zip_file = zipfile.ZipFile(filename,'r')
if os.path.isdir(filename):
pass
else:
new_fname = filename.split(".")
os.mkdir(new_fname[0])
print("开始解压文件 " + filename)
for names in zip_file.namelist():
zip_file.extract(names, new_fname[0])
zip_file.close()
if __name__ == "__main__":
path = "D:\零基础入门学习Python"
upzip(path)