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

如何通过PyMOLPy3将PyMOL控制台命令及输出保存至TXT文件

解决PyMOLPy3捕获命令输出到文本文件的问题

直接捕获iterate_state结果(推荐)

不用依赖控制台输出重定向,直接将iterate_state的结果存入Python变量,再写入文件,这是最可靠的方式:

from pymol import cmd

# 加载目标结构
cmd.load("target_protein.pdb")

# 初始化列表存储氨基酸三字母缩写
aa_abbrs = []

# 执行iterate_state,将结果直接追加到列表
cmd.iterate_state(1, "all", "aa_abbrs.append(resn)")

# 写入文本文件
with open("aa_residues.txt", "w", encoding="utf-8") as f:
    for abbr in aa_abbrs:
        f.write(f"{abbr}\n")

捕获所有控制台命令与输出(官方日志方法)

如果需要记录PyMOL控制台的所有操作和输出,用PyMOL内置的log_open方法,这比手动重定向stdout更准确,不会出现空文件问题:

from pymol import cmd

# 开启日志记录,mode="w"会覆盖旧文件,mode="a"为追加
cmd.log_open("pymol_full_log.txt", mode="w")

# 执行你的操作命令
cmd.load("target_protein.pdb")
cmd.iterate_state(1, "all", "print(resn)")

# 关闭日志
cmd.log_close()

为什么之前的重定向方法无效?

PyMOL的内部控制台输出并非直接流向系统的stdout,而是通过自身的日志系统处理。普通的sys.stdout重定向、系统命令行输出重定向都无法捕获这部分内容,必须使用PyMOL官方提供的日志接口,或者直接在命令中把结果存入Python变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:45:01