Esecuzione di script nella finestra Python di ArcMap?


10

Ho scritto Python nel mio editor di testo, quindi ho uno script Python, script.py. Lo sto ancora sviluppando, quindi non voglio ancora inserirlo nella mia cassetta degli attrezzi, e al momento questo significa copiarlo e incollarlo dal mio editor di testo nella finestra di Python in ArcGIS Desktop.

Esiste un comando che mi permette di chiamarlo dalla finestra di ArcGIS Python?

Qualcosa sulla falsariga di:

run script.py

Sembra logico che dovrebbe esistere, ma forse no.


Stai costruendo la tua sceneggiatura in un editor di testo? Procurati l'ide pyscripter gratuito, sarà la cosa migliore che tu abbia mai fatto!
Hornbydd,

Risposte:



4

Non sono sicuro del tuo livello di esperienza, ma prima di andare troppo avanti vorrai imparare alcune buone pratiche in Python. Sarebbe più idiomatico, o " Pythonic ", modularizzare il codice in funzioni / classi , importil modulo e chiamare una o più funzioni / classi.

Se si desidera apportare modifiche e testare interattivamente il modulo già importato, è possibile utilizzare la reloadfunzione integrata.

Usa il if __name__ == '__main__'trucco per proteggere la procedura principale del tuo script (qualsiasi cosa diversa da importazioni, dichiarazioni di funzioni / classi e forse alcune dichiarazioni di variabili a livello di modulo) dall'esecuzione automatica al momento dell'importazione del modulo ed esegui quella logica solo quando esegui direttamente lo script, ad es. Da un prompt dei comandi o tramite ArcToolbox.

Quindi puoi testare parti specifiche del tuo modulo semplicemente chiamando le classi / funzioni pertinenti.


1
Quindi devi gestire la reload()funzione e tutta la cattiveria della cache dei moduli e simili in Python. Se stai scrivendo iterativamente qualche piccolo script in un editor di testo, questo è un po 'eccessivo.
Jason Scheirer,

1
Non ho avuto problemi reloadda quando evito di usare from module import xo from module import *.
blah238,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.