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有哪些命令吧!
- 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 向包中添加文件
- 使用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压缩
- 查看压缩包中文件的内容
tar -tvf test.tar
- 打包后删除源文件
tar -zcvf test.tar.gz test.log --remove-files
太长了 懒得抄了,请参考:
https://www.cnblogs.com/rsty/p/10443749.html