Python i automatyzacja pracy kameralnej
Python to język programowania stworzony przez holendra Guido van Rossum na początku lat 90-tych. Jest to język programowania ogólnego zastosowania, który został zaprojektowany z myślą o czytelności i prostocie składni.
Jest on szeroko stosowany w wielu dziedzinach, takich jak nauka o danych, tworzenie aplikacji internetowych, automatyzacja zadań i wiele innych. Python jest również językiem otwartoźródłowym, co oznacza, że jego kod źródłowy jest dostępny dla wszystkich i może być modyfikowany i rozpowszechniany bez ograniczeń.
W Pythonie istnieje wiele gotowych bibliotek i narzędzi, które umożliwiają szybkie i łatwe rozwiązywanie różnych problemów. Jest on również językiem interpretowanym, co oznacza, że kod jest wykonywany bezpośrednio, bez konieczności wcześniejszego kompilowania. To wszystko sprawia, że Python jest popularnym wyborem dla początkujących programistów oraz profesjonalistów.
Główne zalety Pythona:
- Prosta i czytelna składnia: jest znany z tego, że jego składnia jest prosta i przejrzysta, co ułatwia naukę i pozwala skupić się na rozwiązywaniu problemów, a nie na drobnych szczegółach składniowych.
- Duża biblioteka standardowa: posiada bogatą bibliotekę standardową, zawierającą szereg narzędzi i funkcji, które umożliwiają szybkie i łatwe rozwiązywanie różnych problemów.
- Szerokie zastosowanie: jest językiem ogólnego zastosowania i jest stosowany w wielu dziedzinach, takich jak nauka o danych, tworzenie aplikacji internetowych, automatyzacja zadań i wiele innych.
- Wsparcie społeczności: ma silną i aktywną społeczność programistów, która dzieli się wiedzą, doświadczeniem i narzędziami. Można również znaleźć wiele zasobów edukacyjnych i dokumentacji online.
- Interoperacyjność: może być wykorzystywany w połączeniu z innymi językami programowania, takimi jak C++, Java lub C#, co umożliwia mieszanie i dopasowywanie różnych narzędzi i technik do rozwiązywania problemów
Moje początki z pythonem
Moje zainteresowania związane z tym językiem wiążą się z moimi potrzebami zautomatyzowania różnych informatycznych procesów.
Na przykład czynności które powtarzamy za każdym razem przygotowując dokumenty cyfrowe (operaty, pliki), albo gdy potrzeba obrobić różne dane (pomiary, obliczenia).
Są to za każdym razem te same czynności, które z powodzeniem można zautomatyzować używając języka python oraz różnych bibliotek stworzonych do różnych zadań.
Porównajmy. Gdy potrzebujemy np. przygotować operat techniczny z inwentaryzacji ścian betonowych mostu na podstawie pomiaru w terenie i zapisać go w formacie pdf, to kolejne czynności wyglądają mniej więcej następująco:
- przygotować edytowalną stronę tytułową
- wydrukować ją do formatu pdf
- wgrać / skopiować wykaz współrzędnych z pliku tekstowego do tabeli (Excel, Word)
- przygotować edytowalny plik z tym wykazem
- wydrukować go do formatu pdf
- połączyć te dwa pdf-y (ten krok może być pominięty jeżeli powyższe pliki były razem)
- po drodze pilnować nazewnictwa plików, folderów, czy format tabeli się zgadza itp.
Jak wygląda taka automatyzacja w wykonaniu skryptu python:
- uruchamiasz skrypt który pyta cię o wskazanie pliku txt
- wynikiem działania skryptu jest operat pdf stworzony według własnych właściwości (strona tytułowa + wykaz współrzędnych)
- koniec!
(w tym przykładzie pomijam część graficzną operatu, czyli szkice itp.)
Gdy miałem w miesiącu do przygotowania kilkadziesiąt opracowań kameralnych (operaty techniczne z inwentaryzacji), wszelka automatyzacja przyspieszała mi pracę.
Automatyzować możemy wszystko co sobie wymyślimy. Prostym skryptem można np. uruchomić twój wskaźnik myszki w Windowsie, żeby kreślił ósemki przez 2 minuty.
Czemu nie? 😉 Możliwości są ogromne, ale o tym w dalszej części wpisu.
Moja nauka programowania
Moja nauka pythona zaczęła się więc od znajdowania rozwiązania problemu, czyli wprost na własnych zadaniach. Jest to bardziej wymagająca droga, niż poprzez uczestnictwo w jakimś kursie, ale za to ucząca lepiej, bo przez doświadczenie. Efekty (lub ich brak) można zobaczyć od razu.
W nauce programowania kieruję się prostymi założeniami:
- oglądam tutoriale znalezione w Internecie i porównuje różne rozwiązania do przykładów kodu z dokumentacji technicznych
- skuteczność działania – ważniejsze jest aby kod rozwiązywał jakiś problem, a nie abym ja był super programistą (określenie priorytetów działań)
- czytanie kodu innych ludzi i odkrywanie jak co działa – tutaj nieoceniona jest oczywiście platforma Stack Overflow – Where Developers Learn, Share, & Build Careers
Dużą inspiracją dla mnie była też książka Automatyzacja nudnych zadań z Pythonem.
Jej angielską wersję możesz przeczytać za darmo pod tym adresem: Automate the Boring Stuff with Python
Przykłady rozwiązań które zastosowałem we własnej pracy
Automatyzacja w python pozwoliła mi na znaczne ułatwienie mojej pracy.
Dzięki temu mogłem skupić się na bardziej złożonych zadaniach, a także szybciej wykonywać codzienne obowiązki. Do tego dochodzi mniejsza ilość błędów i poprawienie dokładności. Wszystko to przyczynia się do lepszego wykorzystania czasu.
Spis głównych wątków:
- Kopiowanie plików pomiędzy folderami
- Obsługa FTP
- Generowanie dokumentów PDF
- Konwersja formatu txt na geo
- Praca z plikami DXF
- Obliczenia z użyciem arkuszy kalkulacyjnych
- Mapy OSM, generowanie KML
- Tworzenie fiszek do programu Anki
- Ściąganie danych poprzez web scraping
- Tkinter – interfejs graficzny
Kopiowanie plików
biblioteki do użycia: shutil
Shutil to biblioteka pythona służąca do obsługi operacji na plikach i katalogach. Biblioteka ta udostępnia funkcje do kopiowania, przenoszenia, usuwania i tworzenia katalogów i plików oraz innych operacji.
Skrypt napisany przy użyciu shutil automatyzuje mi stałą czynność kopiowania plików z pendrive’a (lub innych kart) na dysk.
Gdy mam zgrane pliki z bieżącego dnia pomiaru na pendrive’a (np. z kontrolera, karty), mogę automatycznie skopiować je do moich stałych katalogów na dysku docelowym.
Skrypt sprawdza czy już jest plik i kopiuje tylko te z bieżącą datą. Taki kod w python wygląda następująco:
import os
from datetime import date, datetime
import shutil
# ustawienie folderów
folder_zrodlowy = ''
folder_docelowy = ''
# pozyskanie dzisiejszej daty w str
dzis = str(date.today())
# utworzenie folderu z datą
folder_z_data = os.path.join(folder_docelowy, dzis)
# sprawdzenie czy istnieje folder - jezeli nie to go tworzy
if not os.path.isdir(folder_z_data):
os.makedirs(folder_z_data)
print('Utworzono folder', folder_z_data)
# jeżeli jest już folder - przesledzenie ktore pliki sa z dzisiejsza data i tylko te zostaja skopiowane
if os.path.isdir(folder_z_data):
for plik in os.listdir(folder_zrodlowy):
data_pliku = os.path.getctime(os.path.join(folder_zrodlowy, plik))
data_pliku_str = datetime.fromtimestamp(data_pliku).strftime('%Y-%m-%d')
if data_pliku_str == dzis:
sprawdz_plik = os.path.exists(os.path.join(folder_z_data, plik))
if sprawdz_plik != True:
shutil.copy(os.path.join(folder_zrodlowy, plik), os.path.join(folder_z_data, plik))
else:
print('Jest już taki plik',plik)
Innym rozwiązaniem które stosuję jest porządkowanie plików i ich przenoszenie pomiędzy katalogami. Można np. poprzerzucać wszystkie pliki z jednego miejsca jednocześnie sortując je według własnych potrzeb.
Ściąganie plików z serwera FTP
biblioteki do użycia: ftplib
Ftplib to biblioteka pythona służąca do komunikacji z serwerami FTP (File Transfer Protocol). FTP to protokół sieciowy służący do przesyłania plików pomiędzy komputerami. Biblioteka ftplib umożliwia napisanie skryptów python, które mogą wymieniać pliki z serwerami FTP lub zarządzać plikami na tych serwerach.
Ftplib jest przydatna dla osób, które chcą automatyzować procesy związane z przesyłaniem plików lub zarządzaniem plikami na serwerach FTP.
Mój skrypt działa w ten sposób, że po jego uruchomieniu automatycznie ściągane są pliki z serwera ftp na dysk mojego komputera. Nie potrzebuję korzystać z innych programów do obsługi ftp, klikać wybór połączenia, ustawień i kopiować manualnie.
Rozwiązanie działa ekspresowo. W połączeniu z narzędziem w kontrolerach Leica (system Viva) „z terenu do biura” mogę jeszcze łatwiej wymieniać pliki poprzez ftp.
Generowanie dokumentów i łączenie pdf
biblioteki do użycia: reportlab, fpdf, PyPDF2
Dzięki bibliotekom obsługującym pliki w formacie pdf mamy wiele możliwości na tworzenie i przetwarzanie tego formatu.
- ReportLab to biblioteka python do tworzenia dokumentów PDF. Można z niej korzystać do tworzenia plików PDF z prostymi elementami, takimi jak tekst, obrazy i linie, a także do bardziej złożonych zadań, takich jak tworzenie tabel i formularzy,
- fPDF to inna biblioteka python do tworzenia plików PDF. Podobnie jak ReportLab, pozwala ona na tworzenie prostych elementów, takich jak tekst i obrazy, oraz bardziej złożonych elementów,
- PyPDF2 to biblioteka python do manipulowania istniejącymi plikami PDF. Można z niej korzystać do wyodrębniania tekstu z plików PDF, dodawania lub usuwania stron z plików PDF oraz do łączenia kilku plików PDF w jeden.
Różnicą między tymi bibliotekami jest ich główny cel. ReportLab i fPDF są przeznaczone do tworzenia nowych plików PDF, podczas gdy PyPDF2 służy do manipulowania istniejącymi plikami PDF.
Konwersja pliku txt na format geo
biblioteki do użycia: domyślne
„Geo” to format programu Geo Professional szweckiej firmy SBG Jest to program wyspecjalizowany we wsparciu geodetów przy obliczeniach, generowaniu modeli, wyrównywaniu sieci, rysunków i raportów dokładnościowych.
Aby sprawniej i szybciej tworzyć pliki ze współrzędnymi w tym programie (rozszerzenie .geo) napisałem skrypt który zamienia wykaz współrzędny w pliku tekstowym na format natywny programu.
Oszczędza mi to czas, bo działanie skryptu daje mi od razu plik gotowy do otworzenia w Geo Professional.
Generowanie plików DXF
biblioteki do użycia: dxfwrite, ezdxf
Biblioteka dxfwrite i ezdxf to dwie różne biblioteki w pythonie służące do tworzenia plików DXF. Obie biblioteki umożliwiają tworzenie plików DXF za pomocą kodu Python, ale różnią się pewnymi aspektami.
Główną różnicą między dxfwrite a ezdxf jest to, że dxfwrite jest biblioteką do tworzenia plików DXF, podczas gdy ezdxf jest biblioteką do odczytywania, zapisywania i edycji plików DXF. Oznacza to, że dxfwrite służy głównie do tworzenia nowych plików DXF, podczas gdy ezdxf umożliwia również modyfikowanie istniejących plików DXF.
Inną różnicą jest to, że ezdxf obsługuje więcej wersji formatu DXF niż dxfwrite. Ezdxf jest bardziej elastyczny w kwestii obsługi różnych wersji plików DXF i może być używany do pracy z różnymi aplikacjami CAD, które mogą używać różnych wersji formatu DXF.
Jeśli chcesz szybko stworzyć nowy plik DXF za pomocą kodu python dxfwrite jest dobrym wyborem, natomiast ezdxf jest lepszy gdy potrzebujesz bardziej zaawansowanych funkcji, takich jak edycja istniejących plików DXF lub obsługa różnych wersji formatu DXF.
Praca z arkuszami kalkulacyjnymi
biblioteki do użycia: pandas, openpyxl
Pandas i openpyxl to dwie różne biblioteki w Pythonie, które są szeroko stosowane w pracy z danymi.
Pandas to biblioteka do manipulowania i analizy danych, która zapewnia szybki i łatwy sposób na przetwarzanie i analizowanie dużych zbiorów danych. Umożliwia ona m.in. importowanie danych z różnych źródeł, takich jak pliki CSV lub arkusze kalkulacyjne, a także umożliwia wykonywanie różnych operacji na danych, takich jak agregacja, filtrowanie i grupowanie.
Openpyxl to z kolei biblioteka do odczytu i zapisu plików arkuszy kalkulacyjnych w formacie XLSX. Umożliwia ona otwieranie istniejących arkuszy kalkulacyjnych, modyfikowanie ich zawartości i zapisywanie zmian. Openpyxl jest szczególnie przydatne w sytuacjach, gdy potrzebujesz automatycznie wypełniać lub modyfikować arkusze kalkulacyjne za pomocą kodu python.
Pandas jest lepszą opcją, jeśli potrzebujesz szybko przetwarzać i analizować duże zbiory danych, natomiast openpyxl jest lepszym wyborem, jeśli potrzebujesz automatycznie modyfikować pliki arkuszy kalkulacyjnych za pomocą kodu python.
Wyświetlanie punktów na mapie OSM, generowanie KML
biblioteki do użycia: folium, simplekml, pyproj
Folium to biblioteka python, która pozwala tworzyć interaktywne mapy w języku HTML i wyświetlać je w przeglądarce internetowej. Można z niej korzystać, aby wyświetlać dane geograficzne na mapie, takie jak punkty, linie i poligony, a także wizualizować dane przestrzenne za pomocą różnych warstw i symboli.
Biblioteka Folium jest łatwa w użyciu i pozwala tworzyć atrakcyjne i interaktywne mapy za pomocą kilku prostych linii kodu. Jest to przydatne narzędzie dla analityków danych, geografów i innych, którzy chcą wizualizować dane przestrzenne w sposób przystępny dla odbiorców.

Simplekml to biblioteka python służąca do tworzenia plików KML (Keyhole Markup Language) dla Google Earth. KML jest formatem pliku, który służy do opisywania geograficznych danych przestrzennych, takich jak punkty, linie, poligony i inne elementy geograficzne, w sposób, w jaki mogą być one wyświetlone w programie Google Earth.
Simplekml umożliwia tworzenie tych plików KML za pomocą prostych instrukcji w pythonie, co pozwala na łatwe wizualizowanie danych geograficznych w Google Earth. Jest to przydatne narzędzie dla analityków danych, geografów i innych, którzy chcą prezentować dane geograficzne w atrakcyjny i interaktywny sposób.
Mój skrypt pozwala mi szybko zamienić współrzędne w pliku tekstowym (układ 2000) na punkty w pliku KML (układ WGS). Poprzez Folium mogę wtedy przedstawić te punkty na mapie poprzez kod HTML. Proste i efektywne działanie. Konieczne jest także skorzystanie z biblioteki pyproj, która pozwala transformować współrzędne pomiędzy różnymi systemami.
Tworzenie fiszek w Anki
biblioteki do użycia: genanki
Genanki to biblioteka Python służąca do tworzenia fiszek w formacie Anki. Anki to popularne narzędzie do nauki przez powtarzanie, które pozwala użytkownikom tworzyć i udostępniać fiszki z pytaniami i odpowiedziami. Genanki umożliwia tworzenie plików .apkg za pomocą prostych instrukcji w Pythonie.
Używając genanki można automatyzować proces tworzenia fiszek i wykorzystać dane z innych źródeł do ich tworzenia. Tworzenie pojedynczych kart w Anki trwa długo, ale jeżeli mamy przygotowane dane np. w zestawieniu tekstowym, to odpowiednio napisany skrypt w python pozwoli szybko zamienić dużą ilość danych na odpowiednią ilość fiszek.
Anki to mój nr 1 program do uczenia się. Kiedy mam duże ilości danych które chcę wrzucić do Anki, korzystam ze skryptu wykorzystując bibliotekę genanki
Web scraping czyli „skrobanie” danych z sieci
biblioteki do użycia: Beautiful Soup, Scrapy, Selenium
Web scraping to technika polegająca na automatycznym pobieraniu danych z witryn internetowych. W pythonie istnieje wiele bibliotek i narzędzi, które umożliwiają web scraping. Najpopularniejsze z nich to Beautiful Soup, Scrapy i Selenium.
- Beautiful Soup to biblioteka python służąca do przetwarzania danych HTML i XML. Pozwala ona na wyodrębnienie interesujących nas informacji z kodu strony internetowej i przedstawienie ich w przyjaznej dla użytkownika formie.
- Scrapy to framework python służący do tworzenia aplikacji do web scrapingu. Jest to narzędzie bardziej zaawansowane niż Beautiful Soup i pozwala na zautomatyzowanie procesu pobierania danych z wielu stron internetowych.
- Selenium to biblioteka python służąca do automatyzacji przeglądarek internetowych. Może być używana do web scrapingu, ponieważ pozwala na automatyczne przeglądanie stron internetowych i pobieranie danych z nich.
Jeżeli mamy więc informacje które znaleźliśmy na jakiejś stronie i które przedstawione są w postaci tabelarycznej lub w formie list, możemy w pythonie za pomocą w/w bibliotek szybko zebrać interesujące nas informacje z różnych witryn. Przyspiesza to proces znajdowania i analizy dużej ilości danych.
Tkinter – interfejs graficzny w Windows
biblioteki do użycia: Tkinter
Wszystko powyżej dzieje się z poziomu samego kodu, czyli uruchamiamy odpowiedni skrypt w edytorze kodu. Za pomocą tkinter możemy przenieść ten proces w środowisko okienek. Czyli stworzyć swoją pierwszą aplikację w Windowsie 🙂
Tkinter to biblioteka standardowa pythona służąca do tworzenia interfejsów użytkownika (GUI). GUI to rodzaj interfejsu, który pozwala użytkownikowi komunikować się z komputerem za pomocą graficznych elementów takich jak przyciski, pola tekstowe i menu. Tkinter pozwala na tworzenie prostych aplikacji GUI za pomocą kilku prostych instrukcji w pythonie.
Tkinter jest dobrym wyborem dla osób, które chcą nauczyć się tworzyć proste aplikacje GUI w pythonie lub chcą szybko stworzyć prosty interfejs użytkownika do swoich skryptów.
Wykorzystując tkinter napisałem jakiś czas temu apkę 'Focus-dot’ (dostępna przez Składnicę). Bazuje na prostej zasadzie skupienia na chwilę swojego wzroku w jednym miejscu (na gwiazdce) dla poprawy osobistego skupienia. Posiada parę okienek. Kod jest skomplikowany do pliku exe i uruchamia się z poziomu Windowsa.

Jak zacząć pisać kod w python?
Po prostu zacząć go pisać. Potrzebujesz parę rzeczy ogarnąć, ale naprawdę się da, a rozwiązywanie różnych kodowych problemów może okazać się niezłą zabawą i wyzwaniem w jednym! 😉
Trochę podstaw – książki
Poniższe książki są dobrymi pozycjami dla osób rozpoczynających swoją przygodę z językiem Python. Ważne, aby wybrać taką, która będzie odpowiadać naszym potrzebom i poziomowi zaawansowania.
- „Python. Wprowadzenie” Marka Lutz – to klasyczna książka wprowadzająca do języka python, która jest dobrym wyborem dla osób rozpoczynających swoją przygodę z programowaniem.
- „Python. Podstawy języka” Guido van Rossum i Bryana Oakley – ta książka to oficjalny podręcznik języka python, który zawiera szczegółowy opis składni i funkcji języka oraz przykłady ich użycia.
- „Python. Skrypty dla każdego” Al Sweigart – ta książka skierowana jest do osób, które chcą nauczyć się pisać skrypty w pythonie i automatyzować różne zadania.
- „Python dla każdego” Cay S. Horstmann i Rance D. Necaise – ta książka to dobre wprowadzenie do programowania w pythonie dla osób bez doświadczenia w tej dziedzinie.
- „Python dla data science” Jake VanderPlas – ta książka to dobry wybór dla osób, które chcą nauczyć się używać python do analizy danych i nauki maszynowej.
Dalsze podstawy – internet
Internet to przeogromna kopalnia wiedzy. W teorii, nauki programowania nowego języka można się uczyć tylko i wyłącznie z dokumentacji źródłowej i specyfikacji języka. Sam python, jak i każda biblioteka w nim stworzona posiada własną dokumentację dostępną online.
W praktyce jednak, takie podejście wymaga ogólnych podstaw i znajomości podstawowych koncepcji.
Poniżej kilka stron internetowych, które mogą być pomocne w samodzielnej nauce języka python:
Python.org – oficjalna strona języka Python, na której znajdziesz dokumentację, instrukcje instalacji i przewodniki po języku.
Codecademy – ta strona oferuje interaktywne kursy online, które pomogą Ci nauczyć się podstaw języka Python i innych języków programowania.
Coursera – ta strona posiada szeroką gamę kursów online, w tym wiele dotyczących programowania w pythonie. Możesz zapisać się na bezpłatne kursy lub wybrać opcję płatną, aby uzyskać dostęp do bardziej zaawansowanych treści.
SoloLearn – ta strona zawiera interaktywne kursy online do nauki programowania w Pythonie i innych językach. Możesz również brać udział w konkursach i rywalizować z innymi użytkownikami.
LearnPython.org – ta strona oferuje darmowe kursy online do nauki programowania w Pythonie, a także innych języków. Zawiera również przydatne zadania i ćwiczenia do samodzielnej praktyki.
www.w3schools.com – masa materiałów z podstaw pythona i nie tylko. Dużo tutoriali, ćwiczeń i przykładów.
Pozostają oczywiście wszelkie szkoły uczące kompleksowo nauki kodowania w pythonie i innych językach. Moim jednak zdaniem, jeżeli nie chcemy się przebranżawiać albo pisać bardziej złożonych aplikacji, wystarczy nauczyć się podstaw i od razu pisać kod.
Wszystko zawsze zależy od osobistych celów i tego do czego wykorzystamy python.
Wybór IDE
IDE (Integrated Development Environment, czyli środowisko integracji zespolonej) to oprogramowanie służące do tworzenia aplikacji komputerowych.
Żeby pisać kod, potrzeba mieć w czym. Oto najpopularniejsze środowiska do wyboru:
PyCharm – jest to popularne i zaawansowane IDE, które oferuje wiele narzędzi do tworzenia aplikacji python. Posiada również wbudowane narzędzia do debugowania i profilowania kodu.
IDLE – jest to domyślne IDE dołączone do instalacji pythona. Jest to proste narzędzie, które może być dobrym wyborem dla początkujących programistów.
Visual Studio Code – jest to uniwersalne IDE, które obsługuje wiele języków programowania, w tym python. Posiada wiele narzędzi do tworzenia aplikacji i integrację z systemami kontroli wersji. Mój wybór – można w nim pisać dowolny kod i posiada masę rozszerzeń.
Eclipse – jest to popularne IDE, które obsługuje wiele języków programowania, w tym python. Posiada wiele narzędzi do tworzenia aplikacji i integrację z systemami kontroli wersji.
Spyder – jest to IDE przeznaczone głównie dla naukowców i analityków danych, którzy chcą korzystać z pythona do analizy danych. Posiada wbudowane narzędzia do wizualizacji danych i integrację z innymi bibliotekami Python, takimi jak NumPy i Pandas.
Do dzieła!
Tak na prawdę kodować może każdy. Ludzie w różnym wieku, różnej profesji, o różnych zainteresowaniach. W python można napisać program do pracy, ale także grę dla rozrywki.
Umiejętność konstruowania kodu w jakimś języku programowania nie musi oznaczać także bycia profesjonalnym programistą. W czasach jakich żyjemy każdy inżynier powinien umieć coś napisać, ponieważ jest to następny poziom korzystania z komputerów. Pozwala na samodzielne rozwiązywanie problemów nie tylko obliczeniowych, ale jak pokazałem w powyższym wpisie, także oszczędzania czasu poprzez automatyzację.
Mam nadzieję że choć trochę pokazałem, że warto zacząć pisać swoje własne skrypty i rozwiązywać przy ich pomocy różne problemy.
Powodzenia we własnej pracy z Python!
Kody źródłowe moich skryptów są dostępne na stronie Składnica: