Python Schulungs Skript Gesamt

Aus xinux.net
Zur Navigation springen Zur Suche springen

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()

Links