2 votos

Ejecutando un script de Powershell desde las Acciones de QGIS o la Consola de Python

¿Alguien puede explicar cómo funcionan las Acciones de Windows/Open?

Y también la consola de python?

Tengo un archivo powerscript .ps1 que quería lanzar desde cualquiera de estas opciones y simplemente no parece funcionar.

Si intento simplemente ejecutar lo siguiente como una Acción de Windows.

powershell

Recibo el mensaje de error "No se puede ejecutar el comando powershell".

Sin embargo, si intento ejecutar cmd no recibo un error y sé que está haciendo algo en segundo plano porque ejecutando la siguiente Acción de Windows lanza el bloc de notas.

cmd /c ("notepad")

En la consola de python si ejecuto el siguiente script entonces el bloc de notas aparece felizmente.

import subprocess
subprocess.call(['notepad'])

Pero si reemplazo 'notepad' con 'powershell' recibo el siguiente error.

Traceback (most recent call last):
File "C:\OSGEO4~1\apps\Python36\lib\code.py", line 91, in runcode
exec(code, self.locals)
File "", line 1, in 
File "C:\OSGEO4~1\apps\Python36\lib\subprocess.py", line 267, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\OSGEO4~1\apps\Python36\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\OSGEO4~1\apps\Python36\lib\subprocess.py", line 990, in
_execute_child
startupinfo)
FileNotFoundError: [WinError 2] No se puede encontrar el archivo especificado

Supongo que esto tiene algo que ver con un shell OSGEO4 que se está ejecutando en segundo plano o que es llamado por estos comandos?

No he podido encontrar información detallada o buenos ejemplos de cómo funcionan estas funciones fuera de hacer cosas dentro de QGIS, donde quiero usar QGIS para ejecutar ciertas funciones fuera de QGIS (a través de scripts de powershell), asumo que es posible?

También si alguien ejecuta scripts de powershell desde dentro de QGIS, ¿podría por favor explicar cómo se hace? Y si alimentas variables me interesaría mucho eso también (aunque asumiendo que puedo ejecutar scripts ps1 asumo que la forma más fácil sería enviar la variable a un archivo de texto y simplemente hacer que el script ps1 lea el texto allí, o producir un archivo ps1 y llamarlo desde otro archivo ps1?

2voto

Doncho Puntos 1

En QGIS, al usar los mismos comandos, obtengo el mismo error que tú. Sin embargo, funcionará si colocas la ruta completa a PowerShell:

import subprocess
subprocess.call(['c:\\windows\\system32\\WindowsPowerShell\\v1.0\\powershell'])

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