[GRASS-dev] Error running g.rename from python

Glynn Clements glynn at gclements.plus.com
Fri Oct 10 03:23:58 PDT 2014


Erick Opiyo wrote:

> Initially I was able to batch rename files in grassdb using the command
> listed below
> 
> g.parse_command("g.rename",rast=old_name,new_name)
> 
> But now I keep getting this error:
> 
> SyntaxError: non-keyword arg after keyword arg
> 
> What could be the issue?

This:

	g.parse_command("g.rename", rast=old_name, new_name)

is a function call with three arguments:

	1. "g.rename"
	2. rast=old_name
	3. new_name

The second argument is a keyword argument, the first and third are
positional (non-keyword) arguments. Python doesn't allow positional
arguments to follow keyword arguments; positional arguments come
first, keyword arguments last.

Given the context, it's safe to assume that you want to pass a pair of
map names as the value to the rast= option. This requires explicit
parentheses so that the comma is treated as forming a tuple rather
than as an argument separator:

	g.parse_command("g.rename", rast=(old_name,new_name))

The parentheses in a tuple value can only be omitted if it doesn't
result in the comma being ambiguous (as is the case in a function
call).

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


More information about the grass-dev mailing list