Виконання сценарію у вікні Pychon ArcMap?


10

Я писав Python у своєму текстовому редакторі, щоб у мене був сценарій Python, script.py. Я все ще розробляю його, тому не хочу розміщувати його в моєму наборі інструментів, і на даний момент це означає копіювати та вставляти його з мого текстового редактора у вікно Python на ArcGIS Desktop.

Чи є команда, яка дозволяє мені викликати її з вікна ArcGIS Python?

Щось у напрямку:

run script.py

Здається логічним, що воно повинно існувати, але, можливо, ні.


Ви будуєте свій сценарій у текстовому редакторі? Отримайте собі безкоштовну ідею пискриптора, це буде найкраще, що ви коли-небудь зробите!
Хорнбідд

Відповіді:



4

Я не впевнений у вашому рівні досвіду, але перш ніж ви заглибитеся, вам захочеться вивчити деякі найкращі практики в Python. Було б ідіоматичнішим, або « пітонічним », модулювати модуль у функціях / класах , importмодулі та викликати одну чи кілька функцій / класів.

Якщо ви хочете внести зміни та інтерактивно перевірити вже імпортований модуль, ви можете використовувати reloadвбудовану функцію.

Використовуйте if __name__ == '__main__'трюк, щоб захистити основну процедуру сценарію (все, крім імпорту, декларацій функції / класу, а можливо, деякі декларації змінних на рівні модуля) від автоматичного запуску при імпорті модуля, і виконувати цю логіку лише під час запуску сценарію безпосередньо, наприклад від командного рядка або через ArcToolbox.

Потім ви можете протестувати певні частини модуля, просто зателефонувавши до відповідних класів / функцій.


1
Тоді вам доведеться розібратися з reload()функцією і всіма гнучкістю кешування модулів і подібним у Python. Якщо ви повторно пишете невеликий сценарій у текстовому редакторі, це трохи зайве.
Jason Scheirer

1
У мене не було жодних проблем reload, поки я уникаю використання from module import xабо from module import *.
blah238
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.