ipy_workdir.py
41 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2027 | from IPython.core import ipapi | ||
ip = ipapi.get() | ||||
vivainio
|
r851 | |||
import os, subprocess | ||||
workdir = None | ||||
def workdir_f(ip,line): | ||||
Bernardo B. Marques
|
r4872 | """ Exceute commands residing in cwd elsewhere | ||
vivainio
|
r851 | Example:: | ||
Bernardo B. Marques
|
r4872 | |||
vivainio
|
r851 | workdir /myfiles | ||
cd bin | ||||
Bernardo B. Marques
|
r4872 | workdir myscript.py | ||
vivainio
|
r851 | executes myscript.py (stored in bin, but not in path) in /myfiles | ||
""" | ||||
global workdir | ||||
dummy,cmd = line.split(None,1) | ||||
if os.path.isdir(cmd): | ||||
workdir = os.path.abspath(cmd) | ||||
print "Set workdir",workdir | ||||
elif workdir is None: | ||||
print "Please set workdir first by doing e.g. 'workdir q:/'" | ||||
else: | ||||
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 | ||||
print "Execute command '" + cmd+ "' in",workdir | ||||
Jörgen Stenarson
|
r4208 | olddir = os.getcwdu() | ||
vivainio
|
r851 | os.chdir(workdir) | ||
try: | ||||
os.system(cmd) | ||||
finally: | ||||
os.chdir(olddir) | ||||
Brian Granger
|
r2205 | ip.define_alias("workdir",workdir_f) | ||