This is a read-only mirror of pymolwiki.org

Difference between revisions of "PythonTerminal"

From PyMOL Wiki
Jump to navigation Jump to search
 
m (6 revisions)
 
(5 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:System_Scripts]]

Latest revision as of 03:53, 28 March 2014

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)"