[GRASS-user] Running an external executable file from a Python
Script
Ricardo Filipe Soares Garcia da
ricardo.garcia.silva at gmail.com
Thu Mar 10 10:59:23 EST 2011
Hi (Olá)
in order to figure out what is your current working folder (or active
folder) you can do
# python code
import os
os.getcwd()
# end of code
This will return a string with your current working folder.
As Glyn is stating, if you are going to call this external binary from
within a python script you can use a grass.Popen object (or just a
normal subprocess.Popen).
The grass.Popen object allows you to capture your external binary's
output and (eventual) error messages.
In the following example, I'm running the 'ls -l' external command,
using the /home/Documents directory as a working directory for the
external command. Please adapt to your problem / operating system:
# python code
import grass.script as grass
externalCommand = ["ls", "-l"] # note that it is a list
externalProcess = grass.Popen(externalCommand, stdout=grass.PIPE,
stderr=grass.PIPE, cwd="/home/ricardo/Documents")
sdtout, stderr = externalProcess.communicate()
# to show the output of your external program
print(stdout)
# end of code
Hope it helps ;)
2011/3/10 Glynn Clements <glynn at gclements.plus.com>:
>
> António Rocha wrote:
>
>> My question is, when I'm running a GRASS python Script what is my active
>> folder in order to place there my Parameter file? Or, is there any way
>> to change my "active folder" while I'm running GRASS python Script?
>
> By "active folder", I presume that you're referring to the current
> directory (aka working directory, current working directory or CWD).
> This is inherited from the calling process; e.g. if you run a script
> from a shell, the script's current directory will be the shell's
> current directory.
>
> When executing a command via subprocess.Popen(), you can specify its
> current directory via the cwd= parameter. The grass.Popen() and
> grass.call() functions accept this parameter, as do all of the
> grass.*_command() functions for running GRASS modules.
>
> You can change the current directory for the current process using
> os.chdir(), but that should normally be avoided, as any relative
> filenames will then be interpreted relative to the new current
> directory, whereas the user probably intended them to be relative to
> the initial current directory.
>
> --
> Glynn Clements <glynn at gclements.plus.com>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>
--
___________________________ ___ __
Ricardo Garcia Silva
More information about the grass-user
mailing list