Daha çox

Niyə bu Python skript QGIS-də yalnız bir dəfə işləyir?

Niyə bu Python skript QGIS-də yalnız bir dəfə işləyir?


Bir vektor qatında kateqoriyalardan istifadə edərək bəzi spesifik xüsusiyyətlərin (xətlərin) rəngini dəyişdirmək üçün bir Python skriptim var. Ssenarini konsolda idxal etdiyim zaman konsoldan ilk dəfə yaxşı işləyir. Ancaq (qgis açıq ikən) ssenarini redaktə edib əvvəlki 'yaşıl' əvəzinə bəzi kateqoriyanın rəngini 'qırmızı' olaraq dəyişdirib yenidən ssenarini idxal etdiyim zaman dəyişikliklər göstərilmir, sətirlər eyni rəngə sahibdir. əvvəlki kimi. Budur ssenari və bəzi şəkillər:

PyQt4.QtGui import * PyQt4.QtCore import * qgis.core import * qgis.utils from iface def change_color (): active_layer = iface.activeLayer () boru kəməri = [["1", "green"], [ "2", "qırmızı"], ["3", "yaşıl"], ["4", "yaşıl"], ["5", "yaşıl"]] kateqoriyalar = [] etiket üçün, boru kəmərindəki rəng: symbol = QgsSymbolV2.defaultSymbol (active_layer.geometryType ()) symbol.setColor (QColor (color)) category = QgsRendererCategoryV2 (int (label), symbol, label) Categories.append (category) expression = 'id' renderer = QgsCategorizedSymbolRenderer22 , kateqoriyalar) active_layer.setRendererV2 (renderer) active_layer.setCacheImage (None) iface.mapCanvas (). refresh () iface.legendInterface (). refreshLayerSymbology (active_layer) change_color ()

İndi gəlin misal üçün ssenarini redaktə etdiyimi və boru kəmərini dəyişdirdiyimi deyim:

boru kəməri = [["1", "green"], ["2", "red"), ["3", "red"], ["4", "green"], ["5", "red "]]

və yenidən skript çalıştırın. Sonra 1 əvəzinə 3 qırmızı xətt göstərilməlidir. Ancaq olmur! Ümid edirəm kifayət qədər aydın idim. (Bir geliştiriciyə belə yaxın deyiləm.)


Hesab edirəm ki, tapdım. >>> idxal (ssenarinin adı) yerinə >>> execfile istifadə etsəm, QGIS-i bağlamadan istədiyim qədər işləyir.


Python skriptinin öldürülməsi və ya ölməsi halında avtomatik olaraq necə yenidən başladılır

İndi bir mərhələdə yuxarıdakı Python skriptimin hər hansı bir səbəbdən ölə bilməsi mümkün ola bilər.

Beləliklə, hər hansı bir səbəbdən öldürüldüyü təqdirdə yuxarıdakı Python skriptimi avtomatik olaraq yenidən başlada biləcək bir növ cron agentinə baş qabıq skriptində sahib olmağı düşünürəm.

Bunu etmək mümkündürmü? Bəli, onda bu cür problemi həll etməyin ən yaxşı yolu nədir?

Test.conf faylını belə yaratdıqdan sonra -

Başlamaq üçün sudo əmrinin altından qaçdım, amma bu prosesi ps ax istifadə edərək arxasında işlədiyini görə bilmirəm?

Px balta niyə mənə heç bir şey göstərmədiyinə dair bir fikir var? Proqramımın işlədiyini və ya yoxluğunu necə yoxlayıram?


Fayl növləri

Fayl olaraq bilə biləcəyiniz şey Python'da bir qədər fərqlidir.

Məsələn, Windows-da bir istifadəçi / OS tərəfindən idarə olunan, düzəldilən və ya yaradılan hər hansı bir maddə ola bilər. Yəni fayllar şəkillər, mətn sənədləri, icra edilə bilən sənədlər və excel faylı və daha çox şey ola bilər. Əksər fayllar ayrı-ayrı qovluqlarda saxlanaraq təşkil olunur.

Python'da bir fayl mətn və ya ikili olaraq təsnif edilir və iki fayl növü arasındakı fərq vacibdir.

Mətn sənədləri hər sətirdə simvol ardıcıllığı daxil olduğu sətir ardıcıllığı kimi qurulmuşdur. Kod və sintaksis olaraq bildiyiniz budur.

Hər sətir EOL və ya adlanan xüsusi bir xarakter ilə sona çatır Xəttin sonu xarakter. Bir neçə növ var, lakin ən çox rast gəlinən vergül <,> və ya yeni xətt xarakteridir. Mövcud xətti bitirir və tərcüməçiyə yenisinin başladığını bildirir.

Arxa əyilmə işarəsi də istifadə edilə bilər və tərcüməçiyə növbəti işarənin - qıvrımdan sonra - yeni bir sətir kimi baxılması lazım olduğunu söyləyir. Bu simvol mətnin özündə yox, kodda yeni bir sətir başlamaq istəmədiyiniz zaman faydalıdır.

İkili fayl mətn faylı olmayan hər hansı bir fayl növüdür. İkili fayllar təbiətinə görə yalnız faylın quruluşunu bilən və ya anlayan bir tətbiq tərəfindən işlənə bilər. Başqa sözlə, ikili oxuya və şərh edə bilən tətbiqetmələr olmalıdır.


Verilənlər bazası miqrasiya skripti

Pythonda yazılmış, MySQL verilənlər bazasından məlumat alacaq və fərqli bir Şema ilə PostgreSQL verilənlər bazasına daxil edəcək bir verilənlər bazası köçürmə ssenarisi üzərində işləyirəm (fərqli cədvəl strukturları, fərqli məlumat növləri və s.).

Performansların əhəmiyyəti var, çünki böyük verilənlər bazaları ilə işləməli olacağam.

İki verilənlər bazası ilə piton danışıqları aparmaq üçün mysql.connector və psycopg2 adapterlərindən istifadə edirəm.

Problemim ondan ibarətdir ki, performansa ehtiyacım var, həm də yeni təzə verilənlər bazasına sətir qoymadan əvvəl mysql məlumatlarını dəyişdirmə / çevirmə gücünə ehtiyacım var. Niyə həqiqətən maraqlar toqquşmasının olduğunu göstərmək üçün sizə bir nümunə verəcəyəm.

Aşağıda bir kod parçası verilmişdir performans olmadan optimallaşdırma, amma heç olmasa harada çevrilmə/dönüşüm məlumat mümkün idi:

Burada gördüyünüz kimi, mysql-dən alınan hər bir sıra üçün, məsələn, bir if ifadəsi etmək imkanım var. bir sahənin dəyərini başqa bir sahəyə qoyun (və ya sahə məlumat növünü tökmə və s.). Hansı ki, senarimdə həqiqətən etməyim lazım olan bir şeydir (db sətirinin hazırlanması).

Bu arada, bir çox insert ifadəsini yuxarıdakı kimi yerinə yetirdiyini (hər bir mysql satırı ayrı-ayrılıqda daxil edilir) olduğunu bildim performansı öldürmək.

Beləliklə, bütün bəyanat bloklarını hazırlayan və sonra hamısını bir bloka daxil edən belə bir şeyə keçməyi düşünürəm:

Bu yanaşma ilə ssenari təxminən 100x daha sürətli ola bilər! Amma bununla bağlı problem, məlumatları daha ətraflı izah edə bilməyəcəyimi (çevrilmə / dönüşüm / tökmə.) çünki bütün satırlar bir obyektə daxil olur və mən artıq onu təkrarlaya bilmirəm.


Python real dünyada¶

Python nə qədər sabitdir?

Çox sabit. 1991-ci ildən bəri təxminən 6 ilə 18 ayda bir yeni, sabit versiyalar çıxmaqdadır və bunun davam edəcəyi ehtimalı var. 3.9 versiyasından etibarən, Python hər 12 ayda bir yeni bir buraxılışa sahib olacaq ( PEP 602).

Geliştiricilər köhnə versiyaların “bugfix” buraxılışlarını buraxırlar, buna görə mövcud versiyaların sabitliyi tədricən yaxşılaşır. Versiya nömrəsinin üçüncü bir hissəsi (məsələn, 3.5.3, 3.6.2) ilə göstərilən səhv düzəlişləri, sabitlik üçün idarə olunur, yalnız məlum problemlər üçün düzəlişlər bir bugfix buraxılışına daxil edilir və interfeyslərin bir müddət ərzində eyni qalacağına zəmanət verilir. bugfix buraxılışları seriyası.

Ən son sabit versiyalar həmişə Python yükləmə səhifəsində tapıla bilər. Python-un istehsala hazır iki versiyası var: 2.x və 3.x. Tövsiyə olunan versiya, ən çox istifadə olunan kitabxanalar tərəfindən dəstəklənən 3.x-dir. 2.x hələ də geniş istifadə olunsa da, artıq saxlanılmır.

Python'dan neçə nəfər istifadə edir?

Yəqin ki, milyonlarla istifadəçi var, baxmayaraq ki, dəqiq bir saymaq çətindir.

Python pulsuz yükləmək üçün mövcuddur, bu səbəbdən satış rəqəmləri yoxdur və bir çox fərqli saytlarda mövcuddur və bir çox Linux dağıtımı ilə paketlənmişdir, buna görə yükləmə statistikası da hekayəni izah etmir.

Comp.lang.python xəbər qrupu çox aktivdir, lakin Python istifadəçilərinin hamısı qrupa göndərmir və hətta oxumur.

Python'da əhəmiyyətli bir layihə varmı??

Python istifadə edən layihələrin siyahısı üçün https://www.python.org/about/success səhifəsinə baxın. Keçmiş Python konfransları üçün araşdırma aparmaq, bir çox fərqli şirkət və təşkilatın töhfələrini ortaya qoyacaqdır.

Yüksək profilli Python layihələrinə Mailman poçt siyahısı meneceri və Zope tətbiqetmə server daxildir. Bəzi Linux dağıtımları, xüsusilə Red Hat, quraşdırıcı və sistem idarəetmə proqramlarının bir hissəsini və ya hamısını Python-da yazmışlar. Python'u daxili istifadə edən şirkətlər arasında Google, Yahoo və Lucasfilm Ltd.

Gələcəkdə Python üçün hansı yeni inkişaflar gözlənilir? ¶

Python Gücləndirilməsi Təklifləri (PEP) üçün https://www.python.org/dev/peps/ saytına baxın. PEP-lər, Python üçün təklif olunan yeni bir xüsusiyyəti təsvir edən, qısa texniki spesifikasiya və əsas gətirən dizayn sənədləridir. X.Y-nin hələ açıqlanmayan bir versiyası olduğu "Python X.Y Release Schedule" adlı bir PEP axtarın.

Yeni inkişaf python-dev poçt siyahısında müzakirə olunur.

Python-a uyğun olmayan dəyişikliklər təklif etmək məqbul sayılırmı? ¶

Ümumiyyətlə, yox. Artıq dünyada milyonlarla satır Python kodu var, bu səbəbdən mövcud proqramların çox kiçik bir hissəsindən daha çoxunu etibarsız edən dildə edilən hər hansı bir dəyişiklik göz yumulmalıdır. Bir dönüşüm proqramı təqdim edə bilsəniz də, Python haqqında bir çox kitabın yazdığı bütün sənədləri yeniləmək problemi var və biz hamısını bir vuruşda ləğv etmək istəmirik.

Bir xüsusiyyət dəyişdirilməli olduqda tədricən yükseltme yolu təmin etmək lazımdır. PEP 5 istifadəçilər üçün pozuntuları minimuma endirərkən geriyə uyğun olmayan dəyişikliklərin tətbiqi üçün izlənilən proseduru təsvir edir.

Python yeni başlayan proqramçılar üçün yaxşı bir dildir?

Tələbələrə Pascal, C və ya C ++ və ya Java alt dəstləri kimi prosedur və statik olaraq yazılmış bir dil ilə başlamaq hələ də yaygındır. Python dilini ilk dili olaraq öyrənməklə şagirdlərə daha yaxşı xidmət göstərilə bilər. Python çox sadə və ardıcıl bir sintaksisə və böyük bir standart kitabxanaya malikdir və ən əsası, başlanğıcda bir proqramlaşdırma kursunda Python istifadə etmək, şagirdlərin problemlərin ayrılması və məlumat növü dizaynı kimi vacib proqramlaşdırma bacarıqlarına cəmlənməsinə imkan verir. Python ilə şagirdlər döngələr və prosedurlar kimi əsas anlayışlarla tez bir zamanda tanış ola bilərlər. Yəqin ki, ilk kurslarında istifadəçi tərəfindən müəyyən edilmiş obyektlərlə işləyə bilərlər.

İndiyə qədər heç vaxt proqram hazırlamamış bir tələbə üçün statik olaraq yazılmış bir dil istifadə etmək qeyri-təbii görünür. Tələbənin mənimsəməsi lazım olan əlavə bir mürəkkəblik təqdim edir və kursun tempini ləngidir. Şagirdlər bir kompüter kimi düşünməyi, problemləri həll etməyi, uyğun interfeyslər dizayn etməyi və məlumatları əhatə etməyi öyrənməyə çalışırlar. Statik olaraq yazılmış bir dildən istifadə etməyi öyrənmək uzun müddət üçün vacib olsa da, tələbələrin ilk proqramlaşdırma kursunda müraciət etmək ən yaxşı mövzu deyil.

Python-un bir çox digər cəhəti onu yaxşı bir ilk dilə çevirir. Java kimi, Python da böyük bir standart kitabxanaya sahibdir, belə ki, tələbələrə bu kursun əvvəlində proqramlaşdırma layihələri verilə bilər et bir şey. Tapşırıqlar standart dörd funksiyalı kalkulyatorla məhdudlaşmır və balans proqramlarını yoxlayın. Standart kitabxanadan istifadə edərək tələbələr proqramlaşdırmanın əsaslarını öyrəndikləri zaman real tətbiqetmələrdə işləməkdən məmnun ola bilərlər. Standart kitabxanadan istifadə etməklə şagirdlərə kodun təkrar istifadəsi haqqında da məlumat verilir. PyGame kimi üçüncü tərəf modulları da tələbələrin əhatə dairəsini genişləndirməkdə faydalıdır.

Python’un interaktiv tərcüməçisi, şagirdlərə proqramlaşdırma apararkən dil xüsusiyyətlərini sınamağa imkan verir. Proqramının mənbəyini başqa bir pəncərəyə daxil edərkən tərcüməçinin işlədiyi bir pəncərə saxlaya bilərlər. Bir siyahının metodlarını xatırlaya bilmirlərsə, belə bir şey edə bilərlər:

Tərcüməçi ilə sənədləşmə heç vaxt proqramlaşdırıldıqları üçün tələbədən uzaq deyildir.

Python üçün yaxşı IDE-lər də var. IDLE, Tkinter istifadə edərək Python-da yazılmış Python üçün çapraz platform IDE'dir. PythonWin, Windows üçün xüsusi bir IDE-dir. Emacs istifadəçiləri Emacs üçün çox yaxşı bir Python rejimi olduğunu bilməkdən məmnun olacaqlar. Bütün bu proqramlaşdırma mühitləri sintaksis işıqlandırma, avtomatik girinti və kodlaşdırma zamanı interaktiv tərcüməçiyə giriş təmin edir. Python düzəliş mühitlərinin tam siyahısı üçün Python wiki-yə müraciət edin.

Python-un təhsildə istifadəsini müzakirə etmək istəyirsinizsə, təhsil-poçt poçt siyahısına qoşulmaqla maraqlana bilərsiniz.


Frame_change_pre işləyicisi yalnız bir dəfə işləyir

Blender 2.75a-da hər bir çərçivədəki əvvəlki cavabdakı koddan istifadə edərək bir mətn obyektini dəyişdirməyə çalışıram (Animasiyada dinamik mətn necə düzəldə bilərəm?). Mənim skriptimlə mətn dəyəri keyframed olan kameranın lens xüsusiyyətindən gəlir.

Qarışıq sənədinə skript əlavə etdim və kamera lensinin dəyərindən istifadə etmək üçün dəyişdirdim. Çalıştır skriptini vurduğumda və sonra bir çərçivə köçürdüyümdə, mətn obyektini 3D görünüşündə gözlənilən kimi yeniləyir. Ancaq sonra başqa bir çərçivə köçürdüyümdə yenilənmir. Alt + A üçün də işləmir və ya bir sıra ardıcıllıq göstərsəm.

Ray'ın təklifinə uyğun olaraq çərçivə və lens dəyərini göstərən bir çap funksiyası əlavə etdim. Çerçevesi irəli-geri hərəkət etdirdiyim zaman yenilənmiş çərçivə nömrəsi, lakin lens dəyəri yalnız Çalışma Skriptinə vurduqdan sonra ilk dəfə dəyişdi və sonra konsolda eyni qaldı. UI-də lens dəyəri dəyişirdi.

İşləyiciləri təmizləmək üçün kodu çalışdım (frame_change_pre.clear ()) və Blender-i bağlayaraq hər şeyi yenidən qurmaq üçün yenidən açın və eyni davranış baş verir.

Zeffii'nin camera_lens = bpy.data.cameras ['Camera']. Lens xəttini funksiyaya qismən işlətmək təklifi.

İndi problemi başa düşdüyüm (hər kəsə təşəkkür edirəm) ssenari ilk dəfə işlədildikdə işləyicini qurur və dəyişəni lens dəyəri ilə təyin edir. Çəkinin hərəkət etdiyi zaman işləyici yalnız funksiyanı yerinə yetirir və lens dəyərini tutan dəyişən funksiyanın xaricində olduğundan heç yenilənmir. Lens dəyişən təyinatının funksiyanın içərisinə köçürülməsi, işləyici hər dəfə çağırıldıqda yenilənməsi deməkdir.

Lakin, indi yeniləmə bir çərçivədən geri qalır. yəni:

  • çərçivə 1-də başlayın, UI və 3D görünüş = 16.0.
  • Çərçivə 2-yə keçin, UI = 16.9, 3D görünüş = 16.0.
  • Çərçivə 3-ə keçin, UI = 17.8, 3D görünüş = 16.9.

Python işləyicisinin əsas kadr dəyəri hesablanmadan icra edildiyini təxmin edirəm. Frame_change_post olaraq dəyişdirməyə çalışdım, amma bu da görünmədi. təkliflər?


Moruq PI GPIO işləmir

Bir moruq pi 3 B + modeli aldım və LED naxışını yaratmaq üçün bəzi skriptlər yazdım. Hər şey işlədi və sonra birdən dayandı. İndi hər dəfə sudo python #scriptNet vasitəsilə bir python skriptini işə saldığımda konsolun çökməsi səbəbindən artıq python kodunu işlədə bilməyəcəyimi və ya kompüteri güc akkordunu çəkmədən söndürə biləcəyimi, ctrl + C düymələrini yalnız c yazdırdığından edə bilmirəm. konsol ekranında və öldür əmrini istifadə edəcək bir python proqramında yoxdur. Cobbler olmadan bağlı kod bəzən işləyəcək, ancaq bununla birlikdə konsol dondurur. Həm də çörək lövhəsinə qoşulmuş LED, başlanğıcda GPIO açılmadan zəif parlayır və onu konsoldan söndürənə qədər yanır. Bir şey yandırdım? Xahiş edirəm baş verənlər barədə kimsə mənə məsləhət verə bilərmi? Mənim sınaq skriptim

Budur problemin mənzərəsi. Budur qurduğum dövrənin şəkli


2 Cavablar 2

Zəhmət olmasa baxın Redaktə edin bu cavabın sonunda.

Tərcüməsi: "Bazar ertəsindən cümə gününə qədər həftənin hər günü 16-dan 23-ə və 0-dan hər saata keçən hər 30-cu dəqiqədə."

İlk cavab qaçır, çünki hər yarım saatda bir işləmir. Yəqin ki, kodunuza bir yuxu qoyaraq bununla dolana bilərsiniz:

Tərcümə: "0-cu dəqiqədə və hər 30-cu dəqiqədə hər saat 16-dan 23-ə qədər və həftənin hər günü bazar ertəsindən cümə gününə qədər 0".

İkinci cavab qaçır, çünki başlamaq istədiyiniz vaxtdan 30 dəqiqə əvvəl 16: 00-da işləyir. Ehtimal ki, bu, göstərilən tələblərinizə "daha yaxın" bir uyğunluqdur. Fərqli olarsa və 17: 00-a qədər gözləyə bilərsinizsə, cədvəldəki sadə bir dəyişiklik bununla məşğul olacaq:

EDİT: Zehni bir blokum var idi. Ağlıma gəldi ki dəqiq sualınıza cavab verin. Yalnız 2 deyil, 3 crontab girişinə sahib olmaq lazımdır:


Kivy və APK-lər yaratmaq

Daha irəli getmək istəyirsinizsə Kivy istifadə etməlisiniz. Kivy, əsasən çox toxunuşlu, qrafika və daha çox xüsusiyyətləri ilə tam işləyən Android tətbiqetmələrimizi yaratmağımıza imkan verərək qapıları geniş şəkildə vurur. Python skriptlərinizi birbaşa Android cihazınıza qura biləcəyiniz və ya hətta Play Store vasitəsilə paylaya biləcəyiniz APK-lərə necə çevirə biləcəksiniz. Ən yaxşı tərəf Kivy-nin də çarpaz platforma olmasıdır, beləliklə müxtəlif platformalar üçün tətbiqetmələr hazırlaya bilərsiniz.

İndi düymələr və tuvallər kimi UI elementlərini qrafika ilə göstərə bilərik. Bir ləzzət olaraq, bir düyməni göstərmək üçün bir az kod necə görünə bilər:

Bunu etmək üçün Kivy'yi bir kompüterdə çalıştırmalıyıq. Windows-da Kivy vasitəsilə inkişaf edə bilərsiniz, ancaq APK-lər yaratmaq istəyirsinizsə, bunun əvəzinə Linux istifadə etməyinizi məsləhət görürəm. Məsələ burasındadır ki, Python skriptlərindən APK-lər yaratmaq hələ də Windows-da uzun müddətdir və mürəkkəb bir prosesdir və bir çox kitabxananın, Android NDK-nın, yolların qurulmasının və s.-nin quraşdırılmasını ehtiva edir, qeyri-mümkün olduğu nöqtəyə qədər mürəkkəbdir.

Xoşbəxtlikdən, sizin üçün bütün ağır yüklərin öhdəsindən gələ bilən bir vasitə mövcuddur ki, buna ‘Buildozer’ deyilir. Bu, Windows-da işləmir, amma xoşbəxtlikdən Linuxu VirtualBox vasitəsilə virtual bir maşın üzərində işə salmaq və sonra Kivvy-dən tətbiqlərinizi qurmaq üçün lazım olan hər şeylə birlikdə gələn bir disk şəklini yükləmək kifayət qədər asandır. VM-lə birlikdə gələn README.txt sənədini oxuyun və bilməyiniz üçün lazım olan hər şeyi danışacaq. Terminala əmrləri yazdıqdan sonra ‘buildozer.spec’ sənədini redaktə etmək qalır. Tətbiqinizin adı, paket adı və daxil edilməsi lazım olan digər sənədlər kimi şeyləri daxil edəcəyiniz yerdir.

Tam məlumatları və yükləmək üçün lazım olan hər şeyi burada tapa bilərsiniz. Bu, həm də Linux ilə oynamaq üçün əla bir fürsətdir, əlavə bir proqram yükləməyə çalışın və s. Ubuntu-nu sevirsinizsə, onda bizi izləyin - gələcək yazıda onu Android cihazınızda necə işlədəcəyinizi sizə göstərəcəm!

Çox güman ki, bir neçə şeyi yeniləməli və bir IDE quraşdırmalısınız (məsələn Ninja IDE) və müxtəlif parametrləri dəyişdirməlisiniz. Bunun hələ də "işə sal" deyildiyini söyləmək kifayətdir və həqiqətən Android Studio və Java ilə əlaqə qurmağınız daha yaxşı olar. Həqiqətən bu bölməni istəsəniz Python-da tətbiqetmə yaratmaq mümkün olduğunu göstərmək üçün daxil etdim. Çox vaxt QPython-a yapışmağı və kodu sınamaq üçün bir yer kimi istifadə etməyinizi və bəlkə də özünüzə lazımlı alətlər etməyinizi məsləhət görürəm.


4 Cavablar 4

Bu, normal olaraq STDOUT prosesi terminaldan başqa bir şeyə yönəldildikdə, çıxışı bəzi OS-ə məxsus ölçülü buferə tamponlandığına görə baş verir (bir çox hallarda 4k və ya 8k ola bilər). Əksinə, bir terminala çıxarkən, STDOUT xətt buferli olacaq və ya heç buferlənməyəcək, beləliklə hər bir n və ya hər bir simvol üçün çıxışı görəcəksiniz.

STDOUT tamponlamasını ümumiyyətlə stdbuf yardım proqramı ilə dəyişə bilərsiniz.

İndi -F jurnalının quyruğunu götürsəniz, hər sətir çıxdığını dərhal yarandıqda görməlisiniz.


Videoya baxın: Python in QGIS. Lesson 0. Vector Layer; Selection.