[GRASS-dev] Python Scripting

Glynn Clements glynn at gclements.plus.com
Sun Jul 20 03:44:32 EDT 2008


Michael Barton wrote:

> I am probably missing something. But I guess I don't understand the  
> advantage of using the modules available from this grass library over  
> using normal Python functions to run a GRASS command. That is, the  
> syntax for running a command here doesn't seem any easier--and maybe a  
> shade more complicated than simply using subprocess.call for simple  
> one-shot commands and subprocess.Popen for commands where you need to  
> return stdout or stderr.
> 
> Are there other benefits to using a grass library that I'm not  
> understanding?

The idea is to avoid scripts all needing to include similar code.

The code examples aren't particularly good examples, as they all have
hard-coded literal option values. If you're running a command with
fixed options, then subprocess.call is straightforward. But most
practical scripts will be using Python expressions as option values,
so they will end up needing the equivalent of make_command. E.g.:

	grass.make_command( "r.category",
		map = map,
		cats = cats )

versus:

	subprocess.call(["r.category",
		"map=%s" % map,
		"cats=%s" % ",".join(map(str,cats))])

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-dev mailing list