准备:
压缩包分别存储在D:\PyCharm\py_code\test\195和D:\PyCharm\py_code\test\CBDB1中,并于该路径新建BatchUnzip.py
以下代码保存于BatchUnzip.py,运行即可得到Organism(ProteinID).faa和AllProtein.faa
备注:从NCBI下载的压缩包中,序列存储在*.zip\ncbi_dataset\data路径中
import zipfile
import os
def un_zip_Tree(path):
listLocal = []
for file in os.listdir(path): # 遍历path中的文件,逐个遍历
if os.path.isdir(file): # 判断是否是文件夹
Local = os.path.join(path, file)#创建压缩包所在路径
listLocal.append(Local) # 路径写入Local(list)
for local in listLocal: # 读取list中的路径
os.chdir(local) # 修改当前工作路径
organism = os.path.basename(local)#获取路径中最后一个名称,作为organism
for zip in os.listdir(local): # 读取文件
if os.path.splitext(zip)[1] == '.zip': # 判断是否是zip压缩文件
newname = (organism + '(' + os.path.splitext(zip)[0] + ')') # 创建新的文件名,
# os.path.splitext(zip)[0]为压缩包名称
ziplocal = os.path.join(local, zip)#创建压缩包所在路径
with zipfile.ZipFile(ziplocal, 'r') as zfile:#打开压缩包
for fileZIP in zfile.namelist():# 遍历压缩文件中的文件
zfile.extract(fileZIP) # 解压文件到当前工作路径,前面以修改工作路径为195和CBDB1
#重命名protein.faa和gene.fna文件
data = os.path.join(local, 'ncbi_dataset', 'data') # 获取解压出来的data路径
for Unzipfile in os.listdir(data):
if os.path.splitext(Unzipfile)[1] == '.faa':
oldpath = os.path.join(data,Unzipfile)#整合protein.faa的路径
newpath = os.path.join(path,newname + '.faa')
os.rename(oldpath,newpath)
Protein = open(newpath,'r')#打开提出出来的protein.faa序列
AllProtein = open(os.path.join(path,'AllProtein.faa'),'a+')#以读写模式创建文件
for line in Protein:
if '>' in line:
line1 = ('>' + newname + '\n')
AllProtein.write(line1)
else:
AllProtein.write(line)
p = os.getcwd()
un_zip_Tree(p)