PythonTerminal: Difference between revisions

From PyMOLWiki
Jump to navigation Jump to search
No edit summary
(redundant script, functionality already in PyMOL)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This is a small script to allow the execution of python commands from the PyMOL command line.  It is very useful for both debugging, and for discovering new functions.
PyMOL allows the execution of python commands from the PyMOL command line.  It is very useful for both debugging, and for discovering new functions.
 
* Any expression that is not recognized as a PyMOL command is passed to the underlying python interpreter
* To force a one-line expression to be executed as python, begin the line with a slash (/)
* Use the [[python]] command to input multi-line python code
 
== Examples ==


<source lang="python">
<source lang="python">
from pymol import cmd
# there is no "print" command in PyMOL, so this will go to the python interpreter
print "Hello World (1)"


def parse(command):
# same, but force it to be python
exec command
/print "Hello World (2)"


cmd.extend('py', parse)
# no lets trick this system by introducing a PyMOL command named "print"
cmd.extend('print', lambda msg: sys.stdout.write("You gave me `%s`\n" % (msg)))
 
# see what happens
print "Hello World (3)"
 
# this will still go to the python interpreter
/print "Hello World (4)"
</source>
</source>
[[Category:Script_Library]]
 
[[Category:System_Scripts]]

Latest revision as of 10:52, 18 August 2011

PyMOL allows the execution of python commands from the PyMOL command line. It is very useful for both debugging, and for discovering new functions.

  • Any expression that is not recognized as a PyMOL command is passed to the underlying python interpreter
  • To force a one-line expression to be executed as python, begin the line with a slash (/)
  • Use the python command to input multi-line python code

Examples

# there is no "print" command in PyMOL, so this will go to the python interpreter
print "Hello World (1)"

# same, but force it to be python
/print "Hello World (2)"

# no lets trick this system by introducing a PyMOL command named "print"
cmd.extend('print', lambda msg: sys.stdout.write("You gave me `%s`\n" % (msg)))

# see what happens
print "Hello World (3)"

# this will still go to the python interpreter
/print "Hello World (4)"