Python (aus Wiki)
Python Overview
Mit Python wollte ich mich bisher nicht beschäftigen, weil ich mich nicht verzetteln wollte. Ich habe ja schon PHP als meine Standard-Scriptsprache für das Web und von altersher noch Perl.
Mit Python mache ich jetzt einen Versuch, weil ich immer wieder interessante Dinge finde, die mit Python gemacht sind, z.B. jetzt Pygme für den MPlayer.
Aussderdem habe ich ja gerade Perl bei mir abgeschafft, nachdem ich meine TWiki-Webs (wofür Perl erforderlich ist) auf MediaWiki (wo statt Perl nur PHP erforderlich ist) migriert habe.
Python als Skript-Sprache
Als Skript-Sprache wird Python von einer ganzen Reihe von Softwares benutzt, beispielsweise von:
- GIMP
- in Microsoft Excel als VBA-Ersatz: https://www.pyxll.com/docs/userguide/vba.html
- Inkscape
- OBS-Studio
- SiriL
- Anaconda
- Libre Office
- ansvr
- KStars
- Astrometry
- Photo Polar Align (PPA)
- WordPress
- nodejs
- Paintshop Pro
- xyz
Installation: “Reines Python”
- Definitive Software Library ID: Python
- Name: Python
- Version: 3.10.7
- Hersteller / Bezugsquelle: https://www.python.org/downloads/
- Installations-Ordner: C:\Users\rubas\AppData\Local\Programs\Python\Python310\python.exe
- ….
Python Editor / Umgebungen / IDEs
Wenn man mit herum expermentieren will, benötigt man zunächst einen Python-Editor (eigentlich eine IDE für Python). Da gibt es eine große Auswahl.
Python wird sehr viel von Prof. Weitz von der Hamburger Hochschule für Angewandte Wissenschaften (früher: Fachhochschule Berliner Tor) verwendet. Herr Weitz empfiehlt ein komplett-Installationspaket z.B. Anaconda. Dann hat man gleich Jupyter Notebooks etc. Jupyter Notebooks hiess früher iPython.
- PyCharm: https://www.jetbrains.com/pycharm/
- Sublime Text 3: https://realpython.com/setting-up-sublime-text-3-for-full-stack-python-development/
- Anaconda / Jupyter Notebooks: https://www.anaconda.com/products/individual
MIt dem “reinen” Python kann man noch nicht soviel anfangen. Man benötigt sehr schnell weitere “Packages”.
Wenn man eine der oben genannten Python IDEs installiert, bekommt man häufig das Python selbst und normalerweise auch einige “Builtin” Pakete gleich mit dazu. Zusätzlich dazu gibt es noch “External Packages” letztere werden auch “Third Party Packages” genannt.
Externe Packages muss man ersteinmal im sog. Python Package Index finden: http://PyPI.org
Anschließend muss man sie lokal installieren: z.B. pip install prettytable
Zur Begriffsverwirrung: Ein “Modul” ist eine Python-Datei, ein Python-Package ist eine Sammlung von mehreren Python-Modulen.
Python Tutorials
Auf Youtube gibt es einfache Einführungen in das Thema Python auf meinem Windows-Computer…
Ganz einfach geht es mit: Learn Python in 1 hour:
- Mosh Hamedani: https://www.youtube.com/watch?v=kqtD5dpn9C8
- Download Python: http://python.org
- Download Python CodeEditor: “PyCharme” http://jetbrains.com/pycharme
Noch mächtiger sind Jupyter Notebooks:
- Corey Schafer: https://www.youtube.com/watch?v=HW29067qVWk
- Download Acaconda Python: https://www.anaconda.com/products/distribution
Viele hilfreiche Beispiele von Jupyter Notebooks findet man bei:
- https://github.com/python/python/A-gallery-of-interesting-Jupyter-notebooks
- https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
- Dort z.B. unter: “Introductory Tutorials”, “Collection of Notebooks”. Examples: “Trapezoid Rule”
Python for Astronomie
Als ein erstes Beispiel möchte ich die Metadaten aus den FITS-Dateien auslesen, die meine Astro-Kamera ASI294MC Pro macht.
Zur Bearbeitung von FITS-Dateien finde ich in der Library astropy das Package astropy.io.fits.
Dokumentation dazu: https://docs.astropy.org/en/stable/io/fits/
Vorher noch: pip install prettytable
Mein erstes Python-Programm:
from astropy.io import fits
from pathlib import Path
from prettytable import PrettyTable
pt = PrettyTable()
pt.field_names = ["File name", "Camera", "Created", "Exposure", "Gain"]
pt.align["File name"] = "l"
Ordner = 'C:/Data/APT/CameraCCD_1/2022-06-07'
p = Path(Ordner)
print("FIT-Dateien im Ordner: " + Ordner)
for f in p.glob('*.fit'):
d = f.parent
dateiname = f.name
hdul = fits.open(f)
datum = hdul[0].header['DATE-OBS']
belichtungszeit = hdul[0].header['EXPTIME']
gain = hdul[0].header['GAIN']
instrument = hdul[0].header['INSTRUME']
# print(dateiname, instrument, datum, belichtungszeit, gain)
pt.add_row([dateiname, instrument, datum, belichtungszeit, gain])
hdul.close()
print(pt)