因为我只有两级目录的名称不同,只遍历两级目录就可以了。其它目录结构相同,直接赋值给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()