ipy_workdir.py
43 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
vivainio
|
r814 | #!/usr/bin/env python | ||
import IPython.ipapi | ||||
ip = IPython.ipapi.get() | ||||
vivainio
|
r815 | import os, subprocess | ||
vivainio
|
r814 | |||
workdir = None | ||||
vivainio
|
r833 | def workdir_f(ip,line): | ||
""" Exceute commands residing in cwd elsewhere | ||||
Example:: | ||||
workdir /myfiles | ||||
cd bin | ||||
workdir myscript.py | ||||
executes myscript.py (stored in bin, but not in path) in /myfiles | ||||
""" | ||||
vivainio
|
r814 | global workdir | ||
dummy,cmd = line.split(None,1) | ||||
if os.path.isdir(cmd): | ||||
vivainio
|
r833 | workdir = os.path.abspath(cmd) | ||
vivainio
|
r814 | print "Set workdir",workdir | ||
elif workdir is None: | ||||
print "Please set workdir first by doing e.g. 'workdir q:/'" | ||||
else: | ||||
vivainio
|
r817 | sp = cmd.split(None,1) | ||
if len(sp) == 1: | ||||
head, tail = cmd, '' | ||||
else: | ||||
head, tail = sp | ||||
if os.path.isfile(head): | ||||
cmd = os.path.abspath(head) + ' ' + tail | ||||
vivainio
|
r833 | print "Execute command '" + cmd+ "' in",workdir | ||
olddir = os.getcwd() | ||||
os.chdir(workdir) | ||||
try: | ||||
os.system(cmd) | ||||
finally: | ||||
os.chdir(olddir) | ||||
vivainio
|
r814 | |||
ip.defalias("workdir",workdir_f) | ||||