Menjalankan skrip di jendela Python ArcMap?

10

Saya telah menulis Python di editor teks saya jadi saya punya skrip Python, script.py. Saya masih mengembangkannya sehingga belum ingin memasukkannya ke dalam kotak alat saya, dan saat ini ini berarti menyalin dan menempelkannya dari editor teks saya ke jendela Python di ArcGIS Desktop.

Apakah ada perintah yang memungkinkan saya memanggilnya dari jendela ArcGIS Python?

Sesuatu di sepanjang garis:

run script.py

Tampaknya logis bahwa itu harus ada, tetapi mungkin tidak.

whatahitson
sumber
Anda membuat skrip dalam editor teks? Dapatkan sendiri ide pyscripter gratis, itu akan menjadi hal terbaik yang pernah Anda lakukan!
Hornbydd

Jawaban:

17

Anda bisa menggunakannya execfile.

Contohnya,

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

Saya tidak yakin dengan tingkat pengalaman Anda, tetapi sebelum Anda terlalu jauh, Anda akan ingin mempelajari beberapa praktik terbaik dengan Python. Akan lebih idiomatis, atau " Pythonic ", untuk memodulasi kode Anda menjadi fungsi / kelas , importmodul Anda, dan memanggil satu fungsi / kelas.

Jika Anda ingin melakukan perubahan dan menguji secara interaktif modul yang sudah diimpor, Anda dapat menggunakan reloadfungsi bawaan.

Gunakan if __name__ == '__main__'trik untuk melindungi prosedur utama skrip Anda (segala sesuatu selain impor, deklarasi fungsi / kelas, dan mungkin beberapa deklarasi variabel tingkat modul) agar tidak berjalan secara otomatis saat mengimpor modul, dan hanya jalankan logika itu saat menjalankan skrip secara langsung, misalnya dari prompt perintah atau melalui ArcToolbox.

Kemudian Anda dapat menguji bagian-bagian tertentu dari modul Anda dengan hanya memanggil kelas / fungsi yang relevan.

blah238
sumber
1
Maka Anda harus berurusan dengan reload()fungsi dan semua nastiness caching modul dan semacamnya dengan Python. Jika Anda berulang menulis beberapa skrip kecil dalam editor teks, ini agak berlebihan.
Jason Scheirer
1
Saya tidak punya masalah dengan reloadselama saya menghindari menggunakan from module import xatau from module import *.
blah238