🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Python #31 – Kommandozeilenparameter mit sys.argv

Posted on 17. Februar 202130. April 2023 by Stefan Draeger

In diesem Beitrag möchte ich dir aufzeigen wie du Kommandozeilenparameter mit sys.argv zu deinem Python Skript hinzufügen kannst und somit dein Programm / Projekt ggf. noch dynamischer aufbauen kannst.

  • Was sind Kommandozeilenparameter?
  • Auswerten von Kommandozeilenparameter
    • Besonderheiten
  • ein kleines Beispiel – Greeting

Was sind Kommandozeilenparameter?

Wenn du Python3 bereits auf der Konsole (Linux oder Windows) ausgeführt hast dann wirst du mindestens schon einmal damit in Berührung gekommen sein.

Denn beim Aufrufen von

python3 helloWorld.py

ist der Dateiname „helloWorld.py“ der Kommandozeilenparameter für die Anwendung „python3“.

Du kannst also einem Programm zusätzlich Informationen übergeben welche ggf. auf die Verarbeitung Einfluss nehmen können. 

Auswerten von Kommandozeilenparameter

Damit du die übergebenen Kommandozeilenparameter in deinem Skript auswerten kannst, musst du zunächst das Modul „sys“ importieren. Ich importiere jedoch gleich aus dem Modul „sys“ die Klasse „argv“ und gebe danach einmal die bisherigen Kommandozeilenparameter auf der Konsole aus.

from sys import argv

print(argv)

Im folgenden Screenshot sehen wir das eine Liste mit bisher einem Wert zurück geliefert wird. (Zu erkennen an den eckigen Klammern.) Bisher ist nur ein Wert enthalten und dieses ist der Dateiname des Python3 Skript.

Python3 - Kommandozeilenparameter "sys.argv"
Python3 – Kommandozeilenparameter „sys.argv“

Ich verwende den Editor „Notepad++“ welcher recht sparsam im Umgang mit Systemresourcen ist. In diesem Beitrag führe ich die Skripte auf der Eingabeaufforderung von Windows10 aus.

Wenn wir nun hinter dem Dateinamen des Python3 Skripts eine weitere Zeichenkette anhängen wird diese in die Liste aufgenommen.

C:\python3_test>python3 helloWorld.py Test
['helloWorld.py', 'Test']

C:\python3_test>

Sollte in der Zeichenkette jedoch ein Leerzeichen enthalten sein so wird diese als zwei Werte interpretiert.

C:\python3_test>python3 helloWorld.py Hier steht ein Text
['helloWorld.py', 'Hier', 'steht', 'ein', 'Text']

C:\python3_test>

Wenn du das nicht möchtest musst du diese Zeichenkette in Anführungszeichen setzen.

C:\python3_test>python3 helloWorld.py "Hier steht ein Text"
['helloWorld.py', 'Hier steht ein Text']

C:\python3_test>

Besonderheiten

Die Kommandozeilenparameter werden als Zeichenkette / String interpretiert auch wenn Zahlen übergeben werden. D.h. wir müssen die Werte zunächst umwandeln.

from sys import argv

if len(argv) > 1:
   a = int(argv[1])
   b = int(argv[2])
   print (a+b)
Umwandeln der Kommandozeilenparameter zum einfachen addieren zweier Zahlen
Umwandeln der Kommandozeilenparameter zum einfachen addieren zweier Zahlen

ein kleines Beispiel – Greeting

Wollen wir nun ein kleines Beispiel schreiben. Es soll auf der Konsole eine Begrüßung ausgegeben werden.

Zunächst prüfen wir ob mehr als ein Parameter existiert. (Der erste Parameter ist ja der Dateiname des Skriptes.) Wenn dieses so ist dann soll eine Zeichenkette „Hallo + NAME“ ausgegeben werden.

from sys import argv

if len(argv) > 1:
   print("Hallo", argv[1], sep=" ")
C:\python3_test>python3 greeting.py Stefan
Hallo Stefan

C:\python3_test>

Sollten wir keinen zusätzlichen Parameter eingeben so wird auch keine Ausgabe auf der Konsole erfolgen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb