Ivan Vinogradov wrote:
> Dear All,
>
> I would greatly appreciate a nudge in the right direction concerning
> the use of cwd argument in the call function from subprocess module.
>
> The setup is as follows:
>
> driver.py             <- python script
> core/                         <- directory
>       main            <- fortran executable in the core directory
>
>
> driver script generates some input files in the core directory. Main
> should do its thing and dump the output files back into core.
> The problem is, I can't figure out how to do this properly.
>
> call("core/main") works but uses .. of core for input/output.
>
> call("core/main",cwd="core") and call("main",cwd="core") both result in
>    File "driver.py", line 47, in <module>
>      main()
>    File "driver.py", line 40, in main
>      print "OUT", call("core/main", cwd="core")
>    File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/subprocess.py", line 443, in call
>      return Popen(*popenargs, **kwargs).wait()
>    File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/subprocess.py", line 593, in __init__
>      errread, errwrite)
>    File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/subprocess.py", line 1051, in _execute_child
>      raise child_exception
> OSError: [Errno 2] No such file or directory
>
> perhaps if subprocess would indicate the abs path of the object in
> question I could figure it out, but as is I'm lost.


Perhaps you're looking for os.path.abspath?

import subprocess
import os

subdir = os.path.join(*[ os.path.dirname(os.path.abspath(__file__)),
"core" ])
print subdir

try:
    retcode = subprocess.call(["./main"], cwd=subdir)
except:
    raise
 
print retcode

-- 
Hope this helps,
Steven

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to