ArcMap'in Python penceresinde komut dosyası çalıştırılıyor mu?


10

Python'u metin düzenleyicime yazıyorum, bu yüzden bir Python betiğim var, script.py. Hala geliştiriyorum, bu yüzden henüz araç kutuma koymak istemiyorum ve şu anda bu, metin düzenleyicimden ArcGIS Desktop'taki Python penceresine kopyalayıp yapıştırmak anlamına geliyor.

ArcGIS Python penceresinden çağırmama izin veren bir komut var mı?

Çizgileri boyunca bir şey:

run script.py

Var olması mantıklı görünüyor, ama belki de olmamalı.


Senaryonuzu bir metin düzenleyicide mi oluşturuyorsunuz? Kendinize ücretsiz pyscripter ide alın, şimdiye kadar yapacağınız en iyi şey olacak!
Hornbydd

Yanıtlar:



4

Deneyim seviyenizden emin değilim, ama çok fazla girmeden önce Python'daki bazı en iyi uygulamaları öğrenmek isteyeceksiniz. Daha deyimsel veya "olacağını Pythonic için," modülarize içine kodunuzu fonksiyonları / sınıfları , importsenin modülü ve / sınıfları bir veya daha fazla işlevleri çağırmak.

Değişiklik yapmak ve zaten içe aktarılmış modülü etkileşimli olarak test etmek istiyorsanız, reloadyerleşik işlevi kullanabilirsiniz.

Komut dosyanızın ana yordamını (içe aktarma, işlev / sınıf bildirimleri ve belki de bazı modül düzeyindeki değişken bildirimleri dışında her şey) modülü içe aktarırken otomatik olarak çalışmaya karşı korumak için if __name__ == '__main__'hileyi kullanın ve bu mantığı yalnızca komut dosyasını doğrudan çalıştırırken, örn. bir komut istemi veya ArcToolbox aracılığıyla.

Ardından, sadece ilgili sınıfları / işlevleri çağırarak modülünüzün belirli bölümlerini test edebilirsiniz.


1
O zaman reload()Python'da modül önbelleğe alma işlevinin ve tüm nastiness ile uğraşmak zorundasınız . Bir metin düzenleyicide yinelemeli olarak küçük bir komut dosyası yazıyorsanız, bu biraz fazladır.
Jason Scheirer

1
Veya reloadkullanmaktan kaçındığım sürece herhangi bir sorun yaşamadım . from module import xfrom module import *
blah238
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.