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

Python循环中根据输入PDB文件名加后缀生成对应输出文件名的方法

实现方案

核心逻辑是先从输入的pdb文件名中提取不带扩展名的前缀,再按照你需要的命名规则拼接自定义输出文件名,传入对应保存方法的参数即可。

具体修改步骤

  • 第一步:拆分文件名获取前缀
    在循环内确认文件为pdb格式后,用os.path.splitext()拆分文件名,得到不带.pdb后缀的前缀:
    base_name = os.path.splitext(f)[0]
    
  • 第二步:给四类保存方法分别传入自定义文件名
    你用到的ProDy内置保存方法、matplotlib的savefig都支持传入filename参数指定输出路径和名称,直接按照「前缀+自定义标识+扩展名」的格式拼接传入即可。
    另外建议把原代码中路径拼接的写法换成os.path.join(),兼容性更好,避免不同操作系统路径分隔符不一致的问题。

修改后的完整代码

#packages
from prody import *
from numpy import *
import numpy as np
from matplotlib.pyplot import *
import matplotlib.pyplot as plt
from pandas import *
import pandas as pd
import os
import os.path

ion()

# assign directory
pdb_directory = '/home/lefebrej95/Documents/PDB'
# 如需统一输出到指定目录可以在这里定义输出路径,比如:
# output_directory = '/home/lefebrej95/Documents/PDB/output'
# os.makedirs(output_directory, exist_ok=True)

data_essa = []

# iterate
for f in os.listdir(pdb_directory):
    if f.endswith('.pdb'):  # select file that ends with pdb
        # 拆分获取文件名前缀
        base_name = os.path.splitext(f)[0]
        # 路径拼接改用os.path.join兼容性更好
        atoms = parsePDB(os.path.join(pdb_directory, f))
        essa = ESSA()
        essa.setSystem(atoms)
        essa.scanResidues()

        essa.getESSAZscores()
        ### 保存npy文件,可自定义后缀标识
        essa.saveESSAZscores(filename=f"{base_name}_essa_zscores.npy")
        ### 保存csv文件,按你给的示例用_gnm_zs后缀
        essa.saveESSAZscorestoCSV(filename=f"{base_name}_gnm_zs.csv")
       
        plt.clf()

        with style.context({'figure.dpi': 100}):
            essa.showESSAProfile()
            ### 保存png图片,自定义标识
            plt.savefig(f"{base_name}_essa_profile.png")
            plt.show()
            
        ### 保存结果pdb文件,自定义标识
        essa.writeESSAZscoresToPDB(filename=f"{base_name}_essa_zscores.pdb")

如果需要调整后缀标识,直接修改字符串拼接部分的内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:24:03