À des fins de débogage, j'ai créé une conditionnelle codée en dur qui vérifie que le script est exécuté de manière autonome ou en tant qu'outil ArcGIS. Y a-t-il un moyen de le comprendre au moment de l'exécution? par exemple une variable d'environnement, une variable globale, etc.
par exemple
dryRun= 1
if dryRun:
par= 'Hello'
else:
par= arcpy.GetParameterAsText(0)
# Do something
sys.executable
sera quelque chose de différent lorsqu'il sera également utilisé comme un outil serveur. Écrivez un script de test qui émetarcpy.AddMessage("Executable: " + sys.executable)
pour confirmer.Si je comprends bien votre question, vous voulez vérifier si vous exécutez un script comme outil de script ou non. S'il s'exécute en tant qu'outil de script, vous souhaitez définir certaines variables à l'aide de GetParameterAsText, et s'il s'exécute de manière autonome, vous souhaitez utiliser des variables codées en dur, est-ce correct? Si oui, vous pouvez effectuer les opérations suivantes:
En vérifiant la longueur de sys.argv, vous déterminez le nombre de paramètres transmis au script. Il y a toujours au moins un paramètre (l'emplacement du script lui-même), donc s'il y en a plus d'un transmis, vous pouvez supposer qu'ArcGIS les envoie (à moins que vous ne passiez des arguments ailleurs).
la source
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
Une façon simple de le faire serait la suivante:
la source