Vous exécutez un script dans la fenêtre Python d'ArcMap?

10

J'ai écrit Python dans mon éditeur de texte, j'ai donc un script Python, script.py. Je suis toujours en train de le développer, donc je ne veux pas encore le mettre dans ma boîte à outils, et pour le moment, cela signifie le copier et le coller de mon éditeur de texte dans la fenêtre Python dans ArcGIS Desktop.

Existe-t-il une commande qui me permet de l'appeler depuis la fenêtre ArcGIS Python?

Quelque chose dans le sens de:

run script.py

Il semble logique qu'elle existe, mais peut-être pas.

whatahitson
la source
Vous construisez votre script dans un éditeur de texte? Procurez-vous l'ide de psy gratuit, ce sera la meilleure chose que vous ferez jamais!
Hornbydd

Réponses:

17

Vous pourriez utiliser execfile.

Par exemple,

>>> execfile(r'c:\my\script.py')
Jason Scheirer
la source
4

Je ne suis pas sûr de votre niveau d'expérience, mais avant d'aller trop loin, vous voudrez apprendre quelques bonnes pratiques en Python. Il serait plus idiomatique, ou " Pythonic ", de modulariser votre code en fonctions / classes , importvotre module, et d'appeler une ou plusieurs fonctions / classes.

Si vous souhaitez apporter des modifications et tester de manière interactive le module déjà importé, vous pouvez utiliser la reloadfonction intégrée.

Utilisez l' if __name__ == '__main__'astuce pour protéger la procédure principale de votre script (tout autre que les importations, les déclarations de fonction / classe et peut-être certaines déclarations de variable au niveau du module) contre l'exécution automatique lors de l'importation du module, et n'exécutez cette logique que lorsque vous exécutez le script directement, par exemple à partir de une invite de commande ou via ArcToolbox.

Ensuite, vous pouvez tester des parties spécifiques de votre module en appelant simplement les classes / fonctions pertinentes.

blah238
la source
1
Ensuite, vous devez gérer la reload()fonction et toute la méchanceté de la mise en cache des modules et autres en Python. Si vous écrivez de manière itérative un petit script dans un éditeur de texte, c'est un peu exagéré.
Jason Scheirer
1
Je n'ai eu aucun problème reloaddepuis que j'évite d'utiliser from module import xou from module import *.
blah238