You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python3从UniProt批量下载序列至单个FASTA文件

实现多UniProt序列写入单个FASTA文件的Python脚本修改

以下是修改后的完整脚本,解决了原脚本生成大量独立文件的问题,将所有下载的序列统一写入单个FASTA文件:

import requests

# 读取accession号列表,过滤空行
with open('testfasta.txt', 'r') as infile:
    accessions = [line.strip() for line in infile if line.strip()]

count = 0
# 打开统一的输出FASTA文件(wb模式支持二进制内容写入)
with open('combined_uniprot_sequences.fa', 'wb') as outfile:
    for acc in accessions:
        # 构造UniProt REST API请求URL
        url = f'https://rest.uniprot.org/uniprotkb/{acc}.fasta'
        response = requests.get(url)
        
        # 验证请求是否成功,避免无效内容写入
        if response.status_code == 200:
            outfile.write(response.content)
            # 添加换行符确保不同FASTA条目间格式规范
            outfile.write(b'\n')
            count += 1
        else:
            print(f"序列 {acc} 下载失败,状态码:{response.status_code}")

print(f"成功下载并写入的序列总数 = {count}")

关键改动说明

  • 统一文件管理:将输出文件的打开操作移至循环外部,通过with语句自动管理文件生命周期,避免频繁IO操作的开销
  • 输入数据优化:用列表推导式读取并过滤空行,确保只处理有效的accession号
  • 错误处理增强:添加响应状态码检查,跳过下载失败的条目并给出提示,保证输出文件的有效性
  • 格式规范维护:每个序列写入后追加换行符,确保多个FASTA条目之间的格式符合标准

内容的提问来源于stack exchange,提问作者Irfan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:41:09