如何修改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
相关产品推荐
相关产品推荐

