4 votos

Hay una solución para la HIERBA yo.maxlik 'clase' de ser una palabra clave en Python?

Estoy corriendo yo.maxlik en python - tratando de automatizar una cadena de procesamiento. Puedo usar el comando:

grass.run_command('i.maxlik', group= group, subgroup=subgroup, class='classification', sigfile = sigfile, verbose = True)

Exasperante, sin embargo 'la clase' es una de python palabra clave y no se ejecuta debido a la 'sintaxis no válida'.

Sabes una manera de trabajar alrededor de esto? He tratado de correo electrónico de la HIERBA lista de desarrolladores, pero no hay respuesta.

Saludos

Becky

4voto

user15617 Puntos 16

Por http://grasswiki.osgeo.org/wiki/GRASS_Python_Scripting_Library#Use_Python_reserved_keyword, añadir un carácter de subrayado al principio del argumento de que es una palabra reservada. Así que el comando sería:

grass.run_command('i.maxlik', group= group, subgroup=subgroup, _class='classification', sigfile = sigfile, verbose = True)

3voto

Jauder Ho Puntos 3172

Aquí es un práctico Python truco que se puede usar para desempaquetar un diccionario de palabras clave args:

def myfunc(arg1, arg2, arg3):
    print arg1, arg2, arg3

args = {"arg1": "Hello", "arg2": "World"}

myfunc(arg3=1234, **args)

Nota ** antes de la variable args

Usted sólo tiene que poner la clase de palabras clave en un diccionario:

args = {"class": 'classification' }

a continuación, pasar como extra palabra clave argumentos:

grass.run_command('i.maxlik', group= group, subgroup=subgroup, sigfile = sigfile, verbose = True, **args)

Nota: también Se puede hacer en línea:

myfunc(arg3=1234, **{"arg1":'Hello', "arg2":"World"})

1voto

moffdub Puntos 3757

Usted puede utilizar args y kwargs técnica sugerida por Nathan W pero me gustaría evitar que, a menos que usted lo necesita también para algo más.

La sintaxis recomendada es de datos y el carácter de subrayado (class hace class_):

from grass.script import run_command
...
run_command('i.maxlik', ..., class_='classification', ...)

Esto se aplica a todas las funciones de forma start_command de la familia.

Tenga en cuenta que Eric G es correcto sobre el carácter de subrayado al principio en caso de GRASS GIS 6 pero el comportamiento fue cambiado recientemente a subrayado al final para seguir Python PEP8 guía de estilo. El carácter de subrayado al principio, serán soportados para la compatibilidad de algún tiempo, pero se le dará una advertencia similar a la siguiente:

WARNING: To run the module add underscore at the end of the option <class>
         to avoid conflict with Python keywords. Underscore at the
         beginning is depreciated.

Si usted piensa que el carácter de subrayado al final en GRASS GIS 6 podría ser útil para usted, por favor cree una mejora de entradas para esta característica de compatibilidad hacia atrás solicitud.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X