批量压缩多个文件夹下的多个文件

本文介绍了一种使用Python进行文件批量压缩和解压缩的方法。通过遍历指定目录下的子目录,找到需要压缩的文件并使用gzip进行压缩。之后,文章还提供了如何解压这些文件的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为我只有两级目录的名称不同,只遍历两级目录就可以了。其它目录结构相同,直接赋值给path。

# -*-coding:utf-8-*-

import os
import sys
import gzip

path="/home/redhat/ATOMS/2019.1.00685.S/science_goal.uid___A001_X1465_X2848/"
list1 = os.listdir(path)

#遍历两级目录
dirs = []
for i in range(len(list1)):
	list2 = os.listdir(path+list1[i])
	for j in range(len(list2)):
		if os.path.isdir(path+list1[i]+"/"+list2[j]):
			dirs.append(list2[j])
			break
		else:
			continue

#找到目录下的文件进行压缩
for i in range(len(list1)):
#	for j in range(len(dirs)):
		paths = path+list1[i]+"/"+dirs[i]+"/product/"
		for filename in os.listdir(paths):
			fp = os.path.join(filename)
			filenames = "I.pbcor.fits"
			if os.path.isfile(paths+fp) and filenames in filename:
				files = paths+fp
				zip_files = '/run/media/redhat/LENOVO_USB_HDD/ATOMS/'+fp+'.gz'
				f = gzip.open(zip_files,'wb')
				f_in = open(files, 'rb')
				f.writelines(f_in)
				f.close()
				f_in.close()

之后的解压

import os
import sys
import gzip

path = "/media/zhang/LENOVO_USB_HDD/ATOMS/"
path2 = "/home/zhang/data/ATOMS/"
file_list = os.listdir(path)
for filename in file_list:
	fp = os.path.join(filename)
	zip_files = path+filename
	if os.path.isfile(path+fp):
		unzip_files = path2+filename[:-3]
		f = gzip.open(zip_files, 'rb')
		open(unzip_files,'wb').write(f.read())
		f.close()
	

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值