Vorlesung Skriptsprachen Duale Hochschule

Werbung
Vorlesung Skriptsprachen
Duale Hochschule Stuttgart
Sommersemester 2016
Dipl.-Ing. (FH) Volker Schepper
Globale Module
• Globale Module aus Standardbibliotheken oder
selbstgeschriebene werden mit dem Anweisung import
eingebunden.
import math
• Mehre Module können in einer Zeile getrennt mit Kommas
eingebunden werden.
import math, random
import math
import random
alternative Schreibweise
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Lokale Module
Lokale Module werden gleich wie globale Module mit der Anweisung
„import“ eingebunden.
Das lokale Module muss in dem gleichen Verzeichnis gespeichert sein,
wie das Hauptprogramm.
Der Dateinamen für das Modul muss mit „.py“ enden. Weitere Punkte
dürfen nicht im Dateinamen stehen.
Konflikte mit gleichnamigen globalen und lokalen Modulen werden wir folgt
aufgelöst:
1) Lokales Modul
2) Globales Modul
3) Wird kein lokales oder globales Modul gefunden, wird ein „ImportError“
erzeugt.
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Lokale Module
main.py
mathemodul.py
import mathemodul
import math
print("Start Skript")
print(mathemodul.pi())
print(mathemodul.kehrwert(mathemodul.pi()) )
Start mathemodul - Initialisierung
Start Skript
3.14
0.3184713375796178
print("Start mathemodul - \
Initialisierung")
def pi():
return 3.14
def kehrwert(var):
return 1/var
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Mathematik mit Python
Methode
Wirkung
exp(x)
entspricht e**x
log(x[, base])
Logarithmus zur Basis base
log10(x)
Logarithmus zur Basis 10
pow(x, y)
entspricht x**y
sqrt(x)
Wurzel von x
sin(x)
Sinus von x
cos(x)
Cosinus von x
tan(x)
Tangens von x
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Mathematik mit Python
import math
i = math.exp(1)
print(i)
2.718281828459045
i = math.sqrt(64)
print(i)
8.0
i = math.sin(math.pi/2)
print(i)
1.0
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Daten
Sollen Daten dauerhaft gespeichert werden, müssen dies
durch eine Datei auf einem dauerhaften Datenträger
erfolgen.
Die Zuordnung/Auffindbarkeit der Daten können
unterschiedliche Verfahren verwendet werden.
• Betriebssystem Zuordnungstabellen
• Datenbanken
• Cloud (Netzwerk)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien
• Mit der Funktion open(...) wird eine
Datei geöffnet.
• Der Rückgabewert ist ein Fileobjekt.
• 1. Parameter: Pfad und Dateiname
• 2. Parameter: Öffnungsmodi
fileobj = open(Pfad und Dateiname, Öffnungsmodi)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien - Modi
Mode
Erklärung
r
Datei kann ausschließlich gelesenen werden.
w
Datei wird neu erstellt, oder vorhandene vollständig
gelöscht. (Überschrieben)
a
Datei wird zum Schreiben geöffnet. Neuer Inhalt wird am
Ende einer vorhandenen Datei angehängt.
r+
Datei wird zum Lesen und Schreiben geöffnet. Erste Position
ist das erste Zeichen der Datei.
w+
Datei wird zum Lesen und Schrieben geöffnet. Datei wird
neu erstellt, oder vorhandene vollständig gelöscht.
a+
Datei wird zum Lesen und Schreiben geöffnet. Initial Position
am Ende der Datei.
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien
• Wird eine Datei geöffnet, können
Laufzeitfehler auftreten.
• Schreibmodus: Keine Zugriffsberechtigung
zum schreiben der Datei. (Z.B. eine anderes
Programm hat bereits die Datei geöffnet)
• Lesemodus: Die Datei existiert nicht
• ==> Daher sollte bei dem öffnen einer Datei
immer eine Ausnahmebehandlung
durchgeführt werden.
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien
• Dateien beinhalten Daten in Form von Strings.
Sollen Zahlen gespeichert oder gelesen
werden, müssen diese Umgewandelt werden.
• Umwandlung: str(); int(); …
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien - read
• Vollständigen Inhalt einer Datei auslesen
s_string = file.read(x)
• Zeilenweise auslesen einer Datei
s_string = file.readline()
• Vollständigen Inhalt einer Datei auslesen und in einer Liste überführen
s_string = file.readlines()
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien - Beispiel
daten = input("Daten: ")
pfad = input("Pfad: ")
try:
f = open(pfad, "w")
f.write(daten)
f.close()
print("Daten sind gespeichert")
except:
print("Fehler bei speichern")
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien im Verzeichnis
• Das Modul glob biete die Funktion glob() an. Die
Funktion gibt eine Liste von Dateien im
Arbeitsverzeichnis zurück.
• Mit dem Funktionsparameter kann nach bestimmten
Dateien gesucht werden.
• "*.*" Alle Dateien (ohne Filterung)
import glob
dateiliste = glob.glob("*.*")
print(dateiliste)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Dateien - Informationen
Das „OS“ Modul gehört zur Python Standard Library. Es verwaltet viele
betriebssystemnahe Aufrufe.
import os
v_info = os.stat("LICENSE.txt")
# Größe in Bytes
print(v_info[6])
# Unixzeit des letzten Zugriffs
print(v_info[7])
# Unixzeit der letzten Modifikation
print(v_info[8])
32826
1330875864
1310353716
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Komplexe File-Operationen
Mit dem Modul „shutil“ können komplexe File-Operationen
durchgeführt werden.
• Datei kopieren
shutil.copyfile(Quelle, Ziel)
• Datei verschieben
shutil.move(Quelle, Ziel)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Zugriff auf das Dateisystem
• Ermitteln des aktuellen Arbeitsverzeichnisses
os.getcwd()
C:\Portable\Portable Python 3.2.1.1\App
• Arbeitsverzeichnis wechseln
os.chdir("/Portable")
print(os.getcwd())
C:\Portable
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Zugriff auf das Dateisystem
• Liste aller Dateien und Unterordner
s_path = os.listdir("C:\Portable\Portable Python 3.2.1.1")
print(s_path)
['App', 'PyScripter-Portable.exe', 'Python-Portable.exe']
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Kommandozeilen-Argument
• Bereits bei starten eines Skriptes können
Parameter übergeben werden.
import sys
if len(sys.argv) == 3:
for i in range(1,4):
print("Das " + str(i) + ". Kommandozeilen-Argument: " + sys.argv[i])
else:
print("Es wurde Kommandozeilen-Argument übergeben")
print("Skript-Name: " + sys.argv[0])
Es wurde Kommandozeilen-Argument übergeben
Skript-Name: module4
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
SYS Modul
• Plattform des Betriebssystems
print(sys.platform)
• Python Interpreter Version (Rückgabe String)
print(sys.platform)
3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)]
• Python Interpreter Version (Rückgabe Tupel)
print(sys.version_info)
(major=3, minor=2, micro=1, releaselevel='final', serial=0)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
SYS Modul
• Version des Betriebssystems (Rückgabe Tupel)
print(sys.getwindowsversion())
(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1')
• Skript beenden
sys.exit()
Optional kann der exit-Funktion ein Parameter übergeben
werden. Der Exit-Code 0 bedeutet erfolgreiches ausführen
des Skriptes. Fehlerhafte Ausführung werden mit ungleich 0
codiert.
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datenbank
Soll ein Programm große Datenmenge verwalten oder mit
komplexen Daten arbeiten, ist es ratsam eine Datenbank zu
verwenden. Durch eine Datenbank wird der aufwand für die
Datenbereitstellung stark reduziert.
Das Programm greift auf eine einheitliche Abstraktionsschicht
zu. Die dahinterliegende Datenbank verwaltet die Daten auf
dem Datenspeicher (Festplatte). Die Datenbank nimmt
Abfragen entgegen und gibt Datensätze wieder zurück.
Abstraktionsschicht
Anwendung
speichern
abfragen
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
db
Datenbank
Python bietet die möglich die Möglichkeit SQL Datenbanken
sehr einfach einzubinden. Über Module können mySQL oder
PostgreSQL Datenbanken verwendet erden.
Zusätzlich biete Python ein Modul für SQLite Datenbank an.
Die SQL Datenbank kann sehr schnell eingebunden werden
und benötigt wenig Ressourcen.
• mySQL
• PostgreSQL
• SQLite
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datentypen von SQLite
Datentypen
• TEXT
– Zeichenketten
• INTEGER
– Ganze Zahlen
• REAL
– Gleitkommazahl
• NUMERIC
– Decimal, Boolean …
• BLOB
– Große binäre Datenmenge (binary large objects)
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datentypen von SQLite
INTEGER
TEXT
REAL
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
CHARACTER(20)
VARCHAR(255)
VARYING
CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
BLOB
BLOB
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
NUMERIC
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
Datenbank anlegen
Das Modul der SQLite Datenbank wird eingebunden.
import sqlite3
Mit der connect-Funktion wird die Verbindung zu der Datenbank aufgebaut.
Sowohl Pfad, Dateiname und Dateiendung sind frei wählbar. Existiert die die Datei
nicht, so wird eine neue Datenbank erzeugt. Existiert Datenbank bereits, wird diese
geöffnet.
verbindung = sqlite3.connect("/db/Datenbank.db")
Sollen Daten lediglich während des Programmablauf zwischengespeichert werden
und nicht dauerhaft speichern. Kann eine Datenbank im Arbeitsspeicher erzeugt
werden.
verbindung = sqlite3.connect(":memory:")
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datenbank anlegen - Beispiel
import sqlite3
verbindung = sqlite3.connect("/tmp/test3.db")
c = verbindung.cursor()
sql = "CREATE TABLE personen(id INT, name TEXT, vorname TEXT, geburtstag
TEXT)"
c.execute(sql)
c.close()
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datensätze anlegen - Beispiel
import sqlite3
verbindung = sqlite3.connect("/tmp/test3.db")
c = verbindung.cursor()
Blockkommentar
sql = """INSERT INTO personen VALUES("maier", "oliver", "27.09.1970")"""
c.execute(sql)
verbindung.commit()
sql = "INSERT INTO personen VALUES('kramer', 'helmut', '29.06.1984')"
c.execute(sql)
verbindung.commit()
c.close()
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datensätze abfragen - Beispiel
import sqlite3
verbindung = sqlite3.connect("/tmp/test3.db")
c = verbindung.cursor()
sql = "SELECT * FROM personen"
c.execute(sql)
for zeile in c:
print(zeile)
c.close()
('maier', 'oliver ', '27.09.1970')
('kramer', 'helmut', '29.06.1984')
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datensätze abfragen - Beispiel
import sqlite3
verbindung = sqlite3.connect("/tmp/test3.db")
c = verbindung.cursor()
sql = "SELECT * FROM personen WHERE name = 'maier'"
c.execute(sql)
for zeile in c:
print(zeile[1])
bernd
c.close()
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datensatz verändern - Beispiel
import sqlite3
verbindung = sqlite3.connect("/tmp/test3.db")
c = verbindung.cursor()
sql = "UPDATE personen SET name = 'gross' WHERE vorname = 'bernd'"
c.execute(sql)
for zeile in c:
print(zeile)
c.close()
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
MySQL Datenbank
• Wird festgestellt, dass eine performantere
Datenbank benötigt wird, kann die SQLite Datenbank
einfach durch z.B. eine mySQL Datenbank ersetzt
werden.
import MySQLdb
connection = MySQLdb.connect("192.168.0.128", "username", "passwort", "test_db")
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Uhrzeit - Unixzeit
import time
var_time = time.asctime()
print(var_time)
print(type(var_time))
var_time = time.time()
print(var_time)
print(type(var_time))
Wed Apr 1 14:06:53 2015
<class 'str'>
1427854013.667
<class 'float'>
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Uhrzeit
import datetime
t = datetime.datetime.now()
print(t)
print('hour :', t.hour)
print('minute:', t.minute)
print('second:', t.second)
print('microsecond:', t.microsecond)
2015-04-01 14:16:39.641000
hour : 14
minute: 16
second: 39
microsecond: 641000
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Datum
import datetime
today = datetime.date.today()
print(today)
print('ctime:', today.ctime())
print('Tupel', today.timetuple())
print('ordinal:', today.toordinal())
print('Year:', today.year)
print('Mon :', today.month)
print('Day :', today.day)
2015-04-01
ctime: Wed Apr 1 00:00:00 2015
(tm_year=2015, tm_mon=4, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0,
tm_wday=2, tm_yday=91, tm_isdst=-1)
ordinal: 735689
Year: 2015
Mon : 4
Day : 1
Vorlesung: Skriptsprachen DHBW Stuttgart - Semester: SS2016 – Dipl.-Ing.(FH) Volker Schepper
Herunterladen