Python - Kommandozeilenargumente

Hallo, aufstrebende Programmierer! Heute werden wir auf eine aufregende Reise in die Welt der Kommandozeilenargumente in Python einsteigen. Keine Sorge, wenn du neu bei der Programmierung bist; ich werde dich durch jeden Schritt mit der Sorgfalt und Geduld eines erfahrenen Lehrers führen. Lasst uns einsteigen!

Python - Command-Line Arguments

Was sind Kommandozeilenargumente?

Stell dir vor, du bist ein Küchenchef und möchtest nicht immer das gleiche Gericht kochen, sondern je nach Wunsch deiner Kunden die Zutaten ändern können. In der Programmierung sind Kommandozeilenargumente wie diese besonderen Wünsche der Kunden. Sie ermöglichen es uns, unseren Python-Programmen verschiedene Eingaben bei der Ausführung zu geben, was unser Code flexibler und mächtiger macht.

Python Kommandozeilenargumente

In Python können wir auf Kommandozeilenargumente leicht zugreifen, indem wir das sys-Modul verwenden. Beginnen wir mit einem einfachen Beispiel:

import sys

print("Hallo, ich bin dein erstes Python-Programm!")
print("Anzahl der Argumente:", len(sys.argv))
print("Argumente:", str(sys.argv))

Speichere dies als hello_args.py und führe es von der Kommandozeile aus wie folgt aus:

python hello_args.py arg1 arg2 arg3

Du wirst eine ähnliche Ausgabe wie folgt sehen:

Hallo, ich bin dein erstes Python-Programm!
Anzahl der Argumente: 4
Argumente: ['hello_args.py', 'arg1', 'arg2', 'arg3']

Lass uns das aufbrechen:

  • sys.argv ist eine Liste, die die Kommandozeilenargumente enthält.
  • Das erste Element (sys.argv[0]) ist immer der Name des Skripts selbst.
  • Der Rest der Elemente sind die Argumente, die wir übergeben haben.

Zugriff auf spezifische Argumente

Jetzt erstellen wir ein Programm, das diese Argumente verwendet:

import sys

if len(sys.argv) < 2:
print("Bitte gib deinen Namen als Argument an!")
else:
name = sys.argv[1]
print(f"Hallo, {name}! Willkommen in der Welt der Kommandozeilenargumente!")

Speichere dies als greet.py und führe es aus:

python greet.py Alice

Ausgabe:

Hallo, Alice! Willkommen in der Welt der Kommandozeilenargumente!

Wenn du es ohne ein Argument ausführst:

python greet.py

Ausgabe:

Bitte gib deinen Namen als Argument an!

Dieses Beispiel zeigt, wie wir unsere Programme interaktive und benutzerfreundlich machen können!

Übergabe von Argumenten bei der Ausführung

Lassen Sie uns ein praktischeres Beispiel erstellen. Wir werden eine einfache Taschenrechner erstellen:

import sys

def rechner(operation, num1, num2):
if operation == 'add':
return num1 + num2
elif operation == 'subtract':
return num1 - num2
elif operation == 'multiply':
return num1 * num2
elif operation == 'divide':
return num1 / num2 if num2 != 0 else "Fehler: Division durch Null"
else:
return "Ungültige Operation"

if len(sys.argv) != 4:
print("Verwendung: python calculator.py <operation> <num1> <num2>")
else:
operation = sys.argv[1]
try:
num1 = float(sys.argv[2])
num2 = float(sys.argv[3])
result = rechner(operation, num1, num2)
print(f"Ergebnis: {result}")
except ValueError:
print("Fehler: Bitte gib gültige Zahlen an")

Speichere dies als calculator.py und verwende es so:

python calculator.py add 5 3

Ausgabe:

Ergebnis: 8.0

Dieses Taschenrechner-Beispiel zeigt, wie wir mächtige Werkzeuge erstellen können, die verschiedene Eingaben nehmen und verschiedene Operationen durchführen.

Python getopt-Modul

Für komplexere Kommandozeilen-Schnittstellen bietet Python das getopt-Modul. Es ist wie ein geschickter Assistent, der dir hilft, alle die verschiedenen Optionen und Argumente zu sortieren, die deine Benutzer möglicherweise übergeben.

Hier ist ein Beispiel:

import sys
import getopt

def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print('test.py -i <inputfile> -o <outputfile>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -i <inputfile> -o <outputfile>')
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print('Input file is:', inputfile)
print('Output file is:', outputfile)

if __name__ == "__main__":
main(sys.argv[1:])

Speichere dies als file_processor.py und führe es aus:

python file_processor.py -i input.txt -o output.txt

Ausgabe:

Input file is: input.txt
Output file is: output.txt

Das getopt-Modul hilft uns, sowohl kurze Optionen (-i, -o) als auch lange Optionen (--ifile, --ofile) zu handhaben, was unser Programm benutzerfreundlicher macht.

Python argparse-Modul

Für noch anspruchsvollere Kommandozeilen-Schnittstellen bietet Python das argparse-Modul. Es ist wie ein vollständig ausgestatteter Restaurant für deine Kommandozeilen-Bedürfnisse!

Hier ist ein Beispiel:

import argparse

parser = argparse.ArgumentParser(description='Verarbeite einige Ganzzahlen.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='eine Ganzzahl für den Akkumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='summiere die Ganzzahlen (Standard: finde das Maximum)')

args = parser.parse_args()
print(args.accumulate(args.integers))

Speichere dies als integer_processor.py und verwende es so:

python integer_processor.py 1 2 3 4

Ausgabe:

4

Oder mit der --sum Option:

python integer_processor.py 1 2 3 4 --sum

Ausgabe:

10

Das argparse-Modul erstellt automatisch Hilfemeldungen, handhabt Fehler und ermöglicht komplexere Argumentstrukturen.

Vergleich der Methoden

Hier ist eine kurze Übersicht der Methoden, die wir besprochen haben:

Methode Komplexität Anwendungsfall
sys.argv Einfach Grundlegende Argumentenverarbeitung
getopt Mittel Kurze und lange Optionen
argparse Fortgeschritten Komplexe CLIs mit automatischer Hilfe

Denke daran, die beste Methode hängt von deinen spezifischen Bedürfnissen ab. Fange einfach mit sys.argv an und erwäge eine Umstellung auf getopt oder argparse, wenn deine Programme komplexer werden.

Zusammenfassend lässt sich sagen, dass Kommandozeilenargumente ein leistungsfähiges Werkzeug in deinem Python-Toolkit sind. Sie ermöglichen es dir, flexible, interaktive Programme zu erstellen, die sich an verschiedene Eingaben und Benutzerbedürfnisse anpassen können. Während du auf deinem Python-Weg weitermachen, wirst du unzählige Möglichkeiten finden, diese Techniken zu nutzen, um erstaunliche Software zu bauen. Frohes Coden, und möge deine Kommandozeilen-Abenteuer immer spannend sein!

Credits: Image by storyset