Python解压.gz,.zip文件

1.解压zip(函数形式)

import zipfile
import os
def un_zip(csv_path):
    for f in  os.listdir(csv_path):
        if ".zip" in f:
            zip_file = zipfile.ZipFile(csv_path + "\\" + f)
            zip_file.extract(zip_file.namelist()[0],csv_path)


 

2.解压.gz(函数形式)

def un_gzfile(gz_path):
    # 异常处理
    try:
        # 压缩文件解压
        for f in  os.listdir(gz_path):
            if ".gz" in f:
                g = gzip.GzipFile(mode="rb", fileobj=open(gz_path+"\\"+f, 'rb'))
                open(gz_path+"\\"+f.replace(".gz",""), "wb").write(g.read())
    except Exception as e:
        print(e)
    else:
        print("文件解压成功!")


————————————————
版权声明:本文为优快云博主「拼命_小李」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/m0_43432638/article/details/108291875

3.压缩.gz

原文链接:Python进阶教程m17b–压缩解压–gzip – 桔子code

三种方式:

gzip.open(),其中的.png很重要,写明解压缩的文件的格式,我在研究核磁图像的时候,会需要将其写为.nii


#juzicode.com / VX:桔子code
import  gzip
# 创建GzipFile实例
zf = gzip.open('logo.png.gz', mode = 'wb') 
print('type(zf):',type(zf))
data = open('logo.png','rb').read()  # 简化描述未关文件
zf.write(data)  # 写文件
zf.close()  # 关闭

gzip.GzipFile()


#juzicode.com / VX:桔子code
import  gzip
# 创建GzipFile实例
zf = gzip.GzipFile('logo2.png.gz', mode = 'wb') 
print('type(zf):',type(zf))
data = open('logo.png','rb').read()  # 简化描述未关文件
zf.write(data)  # 写文件
zf.close()  # 关闭

gzip.comress()


#juzicode.com / VX:桔子code
import  gzip
pf = open('logo3.png.gz', 'wb') # open方法创建普通文件对象
data = open('logo.png','rb').read()  # 简化描述未关文件
data_comp = gzip.compress(data) # 压缩数据
pf.write(data_comp)  # 写文件
pf.close()  # 关闭

4.解压缩.gz


#juzicode.com / VX:桔子code
import  gzip
zip_filename = 'logo.png.gz'
with open('unzip\\logo1.png','wb') as pw:
    zf = gzip.open(zip_filename, mode = 'rb') 
    pw.write(zf.read())  # 写文件
    zf.close()
 
with open('unzip\\logo2.png','wb') as pw:
    zf = gzip.GzipFile(zip_filename, mode = 'rb') 
    pw.write(zf.read())  # 写文件
    zf.close()
 
with open(zip_filename, 'rb') as pr, open('unzip\\logo3.png','wb') as pw:
    pw.write(gzip.decompress(pr.read())  ) 

with open('DWI1.nii','wb') as pw:
    zfile =gzip.open('M:\中日友好医院论文\Data\AD\Sub002\DWI\DWI.nii.gz','r')
    pw.write(zfile.read())
    zfile.close()

 解压缩时,对应open()中第一个参数将是文件的名字,叫啥都无所谓,gzip的内容打开的是.gz文件的具体内容,将其写入打开的文件pw,就是解压缩的过程。

### 使用Python解压`.zip`和提取`.tar`文件 #### 解压 `.zip` 文件 为了处理ZIP文件,可以利用Python标准库中的 `zipfile` 模块。下面是一个简单的例子来展示如何读取并解压缩一个ZIP文件到指定路径: ```python import zipfile import os def unzip_file(zip_path, target_dir): with zipfile.ZipFile(zip_path, 'r') as zip_ref: # 列出所有成员而不立即解压它们 members = zip_ref.namelist() # 只解压不存在于目标目录中的文件 for member in members: member_path = os.path.join(target_dir, member) if not os.path.exists(member_path): # 如果文件已存在,则跳过它 zip_ref.extract(member, path=target_dir) # 调用函数实例化操作 unzip_file('source_code.zip', './output_directory') ``` 此代码片段展示了如何通过 `-n` 参数实现相同的功能,即只解压那些尚未存在于目标位置的文件[^1]。 #### 提取 `.tar` 文件 对于TAR档案,同样可以从Python的标准库导入 `tarfile` 来完成这项工作。这里有一个示例说明怎样打开以及释放一个TAR包的内容至特定的位置: ```python import tarfile def extract_tar(tar_path, output_folder): with tarfile.open(tar_path) as tar: tar.extractall(path=output_folder) extract_tar('example.tar.gz', './destination_folder') ``` 这段脚本会遍历整个TAR文档并将其中所有的条目复制到给定的目标文件夹内;如果希望模仿上述ZIP行为(不覆盖现有文件),则可以在调用 `extract()` 方法之前先检查每个项目的名称是否已经存在于磁盘上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值