批量解压NCBI下载的Protein压缩包,重命名Protein.faa,最后将所有Protein.faa整合到一个fasta中

准备:

        压缩包分别存储在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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值