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

如何修改Python代码将筛选出的ATOM/HETATOM行导出至新文件?

修改Python代码导出PDB筛选结果到文件

假设你现有代码的核心逻辑是读取b.txt并筛选符合条件的行打印,下面分两种常见场景给出修改方案:

场景1:循环中逐行打印的代码

如果你的原代码是类似这样的逐行打印:

with open('b.txt', 'r') as f:
    for line in f:
        if line.startswith(('ATOM', 'HETATOM')):
            print(line.strip())  # 原打印行

只需把最后一行的print语句替换为写入输出文件的操作,同时新增输出文件的打开逻辑(推荐用with语句自动管理文件):

with open('b.txt', 'r') as input_file, open('filtered_b.pdb', 'w') as output_file:
    for line in input_file:
        if line.startswith(('ATOM', 'HETATOM')):
            output_file.write(line)  # 替换原print行,直接写入原行内容

场景2:先收集所有行再批量打印的代码

如果你的原代码是先收集筛选结果再打印:

filtered_lines = []
with open('b.txt', 'r') as f:
    for line in f:
        if line.startswith(('ATOM', 'HETATOM')):
            filtered_lines.append(line)
print(''.join(filtered_lines))  # 原批量打印行

把最后一行的print替换为写入文件的操作即可:

filtered_lines = []
with open('b.txt', 'r') as f:
    for line in f:
        if line.startswith(('ATOM', 'HETATOM')):
            filtered_lines.append(line)
with open('filtered_b.pdb', 'w') as output_file:
    output_file.write(''.join(filtered_lines))  # 替换原print行

关键注意事项

  • 输出文件名可以自定义,建议用.pdb后缀(比如filtered_b.pdb),更符合PDB文件的命名规范。
  • 直接写入原行line而不是line.strip(),因为PDB文件的格式有严格要求,行尾的换行符和行内空格都不能随意修改,否则可能导致后续工具无法识别文件。
  • 使用with语句打开文件,会自动在代码块结束后关闭文件,避免资源泄漏问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:57:12