Python Schulungs Skript Gesamt
Grundlegendes
- Entwickelt von Guido van Rossum am Centrum Wiskunde & Informatica in Amsterdam
- Der Name bezieht sich auf die Monty Phytons
- eine universelle, üblicherweise interpretierte höhere Programmiersprache.
- Sie hat den Anspruch, einen gut lesbaren, knappen Programmierstil zu fördern.
- Blöcke werden nicht durch geschweifte Klammern, sondern durch Einrückungen strukturiert.
- klare und übersichtlichen Syntax
- Objektorientiert, Aspektorientiert, Funktionale
Der Anfang "Hello World"
Der simpelste Befehl in Python ist die Ausgabe einer Zeichenfolge. Dazu gibt es den Befehl print()
#!/usr/bin/python
print("Hallo Welt!")
Das Skript sollte man natürlich noch ausführbar machen
- chmod +x skript
Variablen
Skalare Variablen
#!/usr/bin/python
x = "Hallo Welt!"
print(x)
Arrays oder Feldvariablen
#!/usr/bin/python
mylist=['red', 'green', 'blue']
print(mylist[0])
print(mylist[1])
print(mylist[2])
Die Eingabe
Einfache Eingabe
Die Benutzereingabe wird durch den Befehl input() realistiert
#!/usr/bin/python
eingabe=input("Geben Sie etwas ein\n")
print(eingabe)
Datentyp der Eingabe ist ein String
Bei Eingaben von Zahlen werden 2 Strings aneinander gereiht
#!/usr/bin/python
a = input('Bitte geben Sie eine Zahl ein: ')
b = input('Bitte geben Sie eine zweite Zahl ein: ')
print(a + b)
Umwandlung von Strings in Integer
Hier werden die Zahlen addiert
#!/usr/bin/python
a = eval(input('Bitte geben Sie eine Zahl ein: '))
b = eval(input('Bitte geben Sie eine zweite Zahl ein: '))
print(a + b)
Argumenteübergabe beim Aufruf
Wir müssen hier das Modul sys einbinden
Der Skriptname steht in der Variable sys.argv[0], die Parameterin in sys.argv[n]
#!/usr/bin/python
import sys
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(len(sys.argv))
Die Verzweigung if
Bei if wird gecheckt ob eine Bedingung zutrifft. Wenn ja wird der erste Block durchgeführt. Ansonsten der zweite Block.
#!/usr/bin/python
import sys
x = sys.argv[1]
if x == "xinux":
print("Good Company")
else:
print("Ok")
print "End"
Die case Auswahl
Es gibt keine native case Auswahl in Python :-)
Die while Schleife
Die while Schleife wird solange durchlaufen solange die Bedingung erfüllt ist.
#!/usr/bin/python
import sys
i = 1
x = sys.argv[1]
while i <= int(x):
print(i)
i = i + 1
Dateihandling
Um mit einer Datei zu arbeiten muss man zuerst einen Dateihandle aufmachen.
Man arbeitet danach mit dem Dateihandle. Dieser muss am Ende wieder geschlossen werden.
Datei lesen
- Kompletes lesen einer Datei in eine Variable.
#!/usr/bin/python
dat = open("/etc/passwd","r")
dateiinhalt = dat.read()
print "Typ: ",type(dateiinhalt)
print "Inhalt:\n", dateiinhalt
dat.close()
Funktion als Variable aufrufen
Datei schreiben
- Sequentielles schreiben in eine Datei.
#!/usr/bin/python
fout=open("Beispieldatei2.txt","w")
fout.write("Erster String")
fout.write("Zweiter String")
fout.close()
- Auslesen eienr CSV Datei und jeweils Ausgabe der ersten 2 Felder
#!/usr/bin/python
dat_sys="csv.dat"
dat=open(dat_sys,"r")
for l in dat:
line = l.rstrip().split(";")
print(" field0= ", line[0], " field1= ",line[1], " field2= ",line[2])
dat.close()
Scripte
Netzwerkcheck
#!/usr/bin/python
#pip install pyping colorama wget
dat_sys="/usr/local/etc/funktion.cfg"
import os
import socket, datetime
import pyping,sys
from colorama import init, Fore, Style
dat=open(dat_sys,"r")
init()
def ping_status(name, hostname):
r = pyping.ping(hostname, timeout=100, count=1)
if r.ret_code == 0:
print(Style.RESET_ALL + " ping status " + name + " " + Fore.GREEN + "ok")
else:
print(Style.RESET_ALL + " ping status " + name + " " + Fore.RED + "failed")
def port_status(name,hostname,port):
socket.setdefaulttimeout(1)
start_time = datetime.datetime.now()
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = sock.connect_ex((hostname, int(port)))
if connect == 0:
print(Style.RESET_ALL + " port status " + name + " " + Fore.GREEN + "ok")
else:
print(Style.RESET_ALL + " port status hostname can't connect " + name + " " + Fore.RED + "not ok")
sock.close()
except socket.gaierror:
print(Style.RESET_ALL + " port status hostname can't resolved " + name + " " + Fore.RED + "not ok")
except socket.error:
print(Style.RESET_ALL + " port status hostname can't connect " + name + " " + Fore.RED + "not ok")
end_time = datetime.datetime.now()
def proxy_status(name,url,proxy,port):
x = os.system("env http_proxy="+proxy+":"+port + " " + " https_proxy="+proxy+":"+port + " " + "wget --spider --tries 3 -T 1 -q " + url)
if x == 0:
print(Style.RESET_ALL + " proxy status " + name + " " + Fore.GREEN + "ok")
else:
print(Style.RESET_ALL + " proxy status " + name + " " + Fore.RED + "not ok")
for l in dat:
line = l.rstrip().split(";")
if (len(line)) == 2:
ping_status(line[0], line[1])
if (len(line)) == 3:
port_status(line[0], line[1], line[2])
if (len(line)) == 4:
proxy_status(line[0], line[1], line[2], line[3])
dat.close()