# HG changeset patch # User cat@eee # Date 1266527590 18000 # Node ID bc4b956d57b60acfc41ed057217a5caa8cc07635 # Parent 0816cdb5a7dbed263fb225e6b8db6537992570b4 added run to py diff -r 0816cdb5a7db -r bc4b956d57b6 cmd2.py --- a/cmd2.py Thu Feb 18 15:35:36 2010 -0500 +++ b/cmd2.py Thu Feb 18 16:13:10 2010 -0500 @@ -1016,24 +1016,33 @@ ''' py : Executes a Python command. py: Enters interactive Python mode. - End with `Ctrl-D` (Unix) / `Ctrl-Z` (Windows), `quit()`, 'exit()`. - Non-python commands can be issued with `cmd("your command")`. + End with ``Ctrl-D`` (Unix) / ``Ctrl-Z`` (Windows), ``quit()``, '`exit()``. + Non-python commands can be issued with ``cmd("your command")``. + Run python code from external files with ``run("filename.py")`` ''' self.pystate['self'] = self arg = arg.parsed.raw[2:].strip() + localvars = (self.locals_in_py and self.pystate) or {} + interp = InteractiveConsole(locals=localvars) + interp.runcode('import sys, os;sys.path.insert(0, os.getcwd())') if arg.strip(): - interp = InteractiveInterpreter(locals=self.pystate) interp.runcode(arg) else: - localvars = (self.locals_in_py and self.pystate) or {} - interp = InteractiveConsole(locals=localvars) def quit(): raise EmbeddedConsoleExit def onecmd_plus_hooks(arg): return self.onecmd_plus_hooks(arg + '\n') + def run(arg): + try: + file = open(arg) + interp.runcode(file.read()) + file.close() + except IOError, e: + self.perror(e) self.pystate['quit'] = quit self.pystate['exit'] = quit self.pystate['cmd'] = onecmd_plus_hooks + self.pystate['run'] = run try: cprt = 'Type "help", "copyright", "credits" or "license" for more information.' keepstate = Statekeeper(sys, ('stdin','stdout')) diff -r 0816cdb5a7db -r bc4b956d57b6 docs/pycon2010/fileutil.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/pycon2010/fileutil.py Thu Feb 18 16:13:10 2010 -0500 @@ -0,0 +1,13 @@ +import os +import os.path + +for (dirpath, dirnames, filenames) in os.walk('/home/cat/proj/sqlpython/sqlpython'): + for fname in filenames: + fullfilename = os.path.join(dirpath, fname) + stats = os.stat(fullfilename) + binds['path'] = dirpath + binds['name'] = fname + binds['bytes'] = stats.st_size + cmd("""INSERT INTO cat.files (path, name, bytes) + VALUES (%(path)s, %(name)s, %(bytes)s)""") + quit() diff -r 0816cdb5a7db -r bc4b956d57b6 docs/pycon2010/fileutil.script --- a/docs/pycon2010/fileutil.script Thu Feb 18 15:35:36 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -set echo on -py -import os -import os.path - -for (dirpath, dirnames, filenames) in os.walk('/home/cat/proj/sqlpython/sqlpython'): - for fname in filenames: - fullfilename = os.path.join(dirpath, fname) - stats = os.stat(fullfilename) - binds['path'] = dirpath - binds['name'] = fname - binds['bytes'] = stats.st_size - cmd("""INSERT INTO cat.files (path, name, bytes) - VALUES (%(path)s, %(name)s, %(bytes)s)""") - quit()