pfad = "\\home\\pi"
oder einfacher
pfad = r"\home\pi"
Einen Pfad und einen Dateinamen zusammensetzen
import os
pfad = "\\home\\pi\\Projekte\\Python"
dateiname = "test.txt"
pfadUndDateiname = os.path.join(pfad, dateiname)
Prüfen, ob eine bestimmte Datei existiert und Reaktion darauf, wenn das nicht der Fall ist
Empfohlene Links:
https://www.tutorialspoint.com/python/tk_messagebox.htm
https://docs.python.org/3.9/library/tkinter.messagebox.html
https://docs.python.org/3/library/sys.html
import os
import sys
from tkinter import messagebox
if not os.path.exists(pfadUndDateiname):
messagebox.showerror("Fehler","Die Datei ist nicht vorhanden.")
# gegebenenfalls alles beenden
sys.exit(1)
Datei kopieren
import shutil
shutil.copy(pfadUndDateinameQuelle,pfadUndDateinameZiel)
Datei umbenennen
import os
os.rename(pfadUndDateinameQuelle,pfadUndDateinameZiel)
Datei löschen
Empfohlener Link:
https://www.w3schools.com/python/python_file_remove.asp
import os
os.remove("textdatei.txt")
Eine Datei schreiben
text = "Das ist ein Text"
pfadUndDateiname = r"\home\pi\Projekte\Python\test.txt"
try:
fileObjektTextdatei = None
fileobjektTextdatei = open(pfadUndDateiname, "a", encoding="utf-8")
# a = anhängen
# w = vorhandene Datei wird überschrieben
# Mit encoding kann eine bestimmte Kodierung festgelegt werden, hier utf-8
# Weitere Werte für encoding:
# cp1252
# latin-1 bzw. iso-8859-1
#
# Siehe https://docs.python.org/3/library/codecs.html
#
fileobjektTextdatei.write(text + "\n")
except Exception as fehler:
print("Fehler beim Öffnen / Schreiben der Datei\n\n", fehler)
finally:
if fileObjektTextdatei is None:
print("Die gewählte Datei konnte nicht geöffnet werden.")
else:
if not fileObjektTextdatei.closed:
fileObjektTextdatei.close()
Datei lesen
pfadUndDateiname = r"\home\pi\Projekte\Python\test.txt"
try:
fileobjektDateiLesen = open(pfadUndDateiname, "r")
#
weitereZeile = True
while weitereZeile:
zeile = fileobjektDateiLesen.readline()
if zeile == "":
weitereZeile = False
else:
print(zeile)
fileobjektDateiLesen.close()
except Exception as fehler:
print("************\nFehler: \n\n", fehler)
Datei lesen mit besserer Fehlerbehandlung und grafischen Dialog zur Auswahl der zu öffnenden Datei
# Weitere verwendete Quellen
#
# Python GE-PACKT, 8. Auflage, Verlag mitp, von Michael Weigend, ISBN 978-3-7475-0194-8
#
# https://docs.python.org/3/library/dialog.html
# https://docs.python.org/3/library/tkinter.messagebox.html#module-tkinter.messagebox
# https://stackoverflow.com/questions/40843698/how-to-auto-activate-a-tkinter-simpledialog-pop-up-window
# https://www.geeksforgeeks.org/how-to-check-nonetype-in-python/
# https://docs.python.org/3/tutorial/errors.html
# https://docs.python.org/3/library/exceptions.html
from tkinter import filedialog
from tkinter import messagebox
# Die Datei die ausgelesen werden soll wird mit einem entsprechenden grafischen Dialog ausgewählt
pfadUndDateiname = filedialog.askopenfilename(title="Bitte eine Datei wählen")
if len(pfadUndDateiname) == 0:
messagebox.showerror("Programmende","Keine Datei gewaehlt, das Programm wird beendet!")
else:
try:
fileObjekt = None
fileObjekt = open(pfadUndDateiname,"r")
weitereZeile = True
while weitereZeile:
zeile = fileObjekt.readline()
if zeile == "":
weitereZeile = False
else:
# Eingelesene Zeile ausgeben
print(zeile)
# Fehler abfangen
# https://docs.python.org/3/tutorial/errors.html
# https://docs.python.org/3/library/exceptions.html
#
except PermissionError:
messagebox.showerror("Fehler","Der Zugriff auf die Datei wurde verweigert!")
except Exception as fehlermeldung:
messagebox.showerror("Fehler:", fehlermeldung)
finally:
if fileObjekt is None:
messagebox.showinfo("Info", "Die gewählte Datei konnte nicht geöffnet werden.")
else:
if not fileObjekt.closed:
fileObjekt.close()
tkinter - Einfache grafische Dialoge
Einfache Abfragen mit einem grafischen Dialog - Abfrage von Zahlen und Zeichen (Text)
# Weitere verwendete Quelle:
# https://docs.python.org/3/library/dialog.html#module-tkinter.simpledialog
from tkinter import simpledialog
from tkinter import messagebox
ganzzahl = simpledialog.askinteger("Zahl?","Bitte eine Ganzzahl eingeben:")
if ganzzahl is None:
messagebox.showinfo("Abbruch","Der Eingabedialog wurde abgebrochen.")
else:
messagebox.showinfo("Die Eingabe war:",ganzzahl)
gleitkommazahl = simpledialog.askfloat("Zahl?","Bitte eine Gleitkommazahl eingeben:")
if gleitkommazahl is None:
messagebox.showinfo("Abbruch","Der Eingabedialog wurde abgebrochen.")
else:
messagebox.showinfo("Die Eingabe war:",gleitkommazahl)
zeichenkette = simpledialog.askstring("Text? ABC123...","Bitte eine Zeichenkette eingeben:")
if zeichenkette is None:
messagebox.showinfo("Abbruch","Der Eingabedialog wurde abgebrochen.")
else:
messagebox.showinfo("Die Eingabe war:",zeichenkette)
tkinter - GUI
Ein Textfeld mit Scrollbar
# https://docs.python.org/3/library/tkinter.scrolledtext.html
# https://www.geeksforgeeks.org/python/python-tkinter-scrolledtext-widget/
from tkinter import Tk
from tkinter import END
from tkinter import scrolledtext as sct
hauptfenster = Tk()
# Textfenster mit Scrollbar definieren
text_feld = sct.ScrolledText(hauptfenster, width = 80, height = 15, font = ("Courier", 15))
# Textfenster plazieren
text_feld.grid(column = 0, pady = 10, padx = 10)
# Text in Textfenster einfuegen
text_feld.insert(END, "Die erste Zeile\n")
text_feld.insert(END, "Die zweite Zeile\n")
text_feld.insert(END, "ENDE")
# Wenn alles geschrieben ist, dann das Einfuegen in das Textfeld deaktivieren.
text_feld.configure(state = 'disable')
hauptfenster.mainloop()
Ein vollständiges Programmbeispiel zum Textfeld mit Scrollbar
Programm zum Auslesen und Anzeigen einer Textdatei
Hinweis:
Gerne wird um auf tkinter zuzugreifen
from tkinter import *
verwendet.
Das wird in dieser Dokumentation auch an der einen oder anderen Stelle gemacht,
das könnte aber zu Problemen führen.
In dem nachfolgenden Beispiel verwende ich durchgängig eine Alternative für den Import.
Ich empfehle den nachfolgenden Link für tiefere Einblicke für den generellen Import:
https://openbook.rheinwerk-verlag.de/python/20_001.html#u20.1
# Weitere verwendete Quellen
# https://docs.python.org/3/library/tkinter.scrolledtext.html
# https://www.geeksforgeeks.org/python/python-tkinter-scrolledtext-widget/
# https://tkdocs.com/shipman/button.html
# https://www.tutorialspoint.com/python/tk_button.htm
# https://www.geeksforgeeks.org/python/python-creating-a-button-in-tkinter/
# https://stackoverflow.com/questions/69734809/how-to-clear-delete-the-contents-of-a-tkinter-scrolledtext-widget
# https://stackoverflow.com/questions/33137829/how-to-replace-the-icon-in-a-tkinter-app
# https://stackoverflow.com/questions/69016178/how-to-change-icon-in-tkinter
# https://stackoverflow.com/questions/4643007/intercept-tkinter-exit-command
# https://stackoverflow.com/questions/3352918/how-to-center-a-window-on-the-screen-in-tkinter
# OS
# https://openbook.rheinwerk-verlag.de/python/31_002.html
# https://docs.python.org/3/tutorial/datastructures.html
# https://wiki.tcl-lang.org/page/winfo%28%29
# https://tkdocs.com/shipman/
import tkinter
from tkinter import scrolledtext as sct
from tkinter import filedialog
from tkinter import END
from tkinter import messagebox
import os
def ende():
# Bei Bedarf die Groesse und die Position des Fensters ermitteln
# um z.B. beim Start wieder einzulesen. Hier nicht realisert.
#
# fensterdaten = hauptfenster.winfo_geometry()
exit()
def dateiLaden():
# Die Datei die ausgelesen werden soll wird mit einem entsprechenden grafischen Dialog ausgewaehlt
pfadUndDateiname = filedialog.askopenfilename(title="Bitte eine Datei wählen")
if len(pfadUndDateiname) == 0:
messagebox.showerror("Programmende","Keine Datei gewaehlt, das Programm wird beendet!")
else:
# Den Inhalt des Textfeldes loeschen
text_feld.delete('1.0',END)
try:
fileObjekt = None
fileObjekt = open(pfadUndDateiname,"r")
#
tuplePfadUndDateiname = os.path.split(pfadUndDateiname)
# Zweites Element des Tuple verwenden (die Zaehlung beginnt mit 0).
dateiname = tuplePfadUndDateiname[1]
# Den Dateinamen in der Titelleiste anzeigen
hauptfenster.title("Inhalt der Datei: " + dateiname)
#
weitereZeile = True
while weitereZeile:
# Zeile auslesen
zeile = fileObjekt.readline()
if zeile == "":
weitereZeile = False
else:
# Eingelesene Zeile ins Textfeld ans Ende einfuegen
text_feld.insert(END, zeile)
# Fehler abfangen
# https://docs.python.org/3/tutorial/errors.html
# https://docs.python.org/3/library/exceptions.html
#
except PermissionError:
messagebox.showerror("Fehler","Der Zugriff auf die Datei wurde verweigert!")
except UnicodeError:
messagebox.showerror("Fehler","Probleme beim Öffnen der Datei mit der Zeichenkodierung! \
\nVielleicht handelt es sich nicht um eine Textdatei.")
except Exception as fehlermeldung:
messagebox.showerror("Fehler:", fehlermeldung)
finally:
if fileObjekt is None:
messagebox.showinfo("Info", "Die gewählte Datei konnte nicht geöffnet werden.")
else:
if not fileObjekt.closed:
fileObjekt.close()
hauptfenster = tkinter.Tk()
# Icon in Leiste einbinden, wenn Datei fuer Icon verfuegbar ist.
#
dateinameIcon = "Lupe_32x32_hell.png"
if os.path.exists(dateinameIcon):
# Icon in Leiste aendern
#
# Eine Moeglichkeit:
# hauptfenster.call('wm', 'iconphoto', hauptfenster._w, PhotoImage(file=dateinameIcon))
#
# Eine weitere Moeglichkeit:
#
foto = tkinter.PhotoImage(file = dateinameIcon)
hauptfenster.wm_iconphoto(False,foto)
# Titel in Leiste festlegen
hauptfenster.title("Textdatei auslesen und anzeigen von Sherlock19@posteo.de")
# Reaktion vorsehen, wenn Fenster ueber das Kreuz beendet wird.
hauptfenster.wm_protocol("WM_DELETE_WINDOW", ende)
# Textfenster mit Scrollbar definieren und danach mit GRID plazieren
text_feld = sct.ScrolledText(hauptfenster, width = 80, height = 15, font = ("Courier", 15))
text_feld.grid(row = 0, column = 0, columnspan = 4, pady = 10, padx = 10)
# Zwei Buttons anlegen und danach mit GRID plazieren
button_datei_laden = tkinter.Button(hauptfenster, text="Datei laden", command = dateiLaden)
button_ende = tkinter.Button(hauptfenster, text="Ende", command = ende)
button_datei_laden.grid(row=1, column=0, columnspan=2, pady = 10)
button_ende.grid(row=1, column=2, columnspan=2, pady = 10)
# Fenster auf dem Bildschirm zentriert darstellen
hauptfenster.eval('tk::PlaceWindow . center')
hauptfenster.mainloop()
tkinter - Einen Ball auf einer Fläche hin und her bewegen
# Ball bewegen programmiert von Sherlock19@posteo.de
# Weitere verwendete Quellen
# https://www.geeksforgeeks.org/python-after-method-in-tkinter/
# https://stackoverflow.com/questions/25753632/tkinter-how-to-use-after-method
# Notwendige Bibliotheken einbinden
from tkinter import *
import time
def ball_hin_und_her_bewegen():
global x_schrittweite
# Position des Balls ermitteln
# geliefert wird eine Liste mit den Koordinaten x, y, x1, y1
liste_position_ball = zeichenflaeche.coords(ball)
x = liste_position_ball.pop(0)
# Wenn der Ball zu weit nach rechts fliegt, dann die Richtung ändern
if x > 269:
x_schrittweite = -1
# Wenn der Ball zu weit nach links fliegt, dann die Richtung ändern
if x < 2:
x_schrittweite = 1
# Ball um einen Punkt bewegen
zeichenflaeche.move(ball,x_schrittweite,0)
# Warte 5 ms (Millisekunden) und rufe Prozedur auf
zeichenflaeche.after(5,ball_hin_und_her_bewegen)
# Globale Variable zur Steuerung des Balls
x_schrittweite = 1
# Hauptfenster erzeugen
hauptfenster = Tk()
# Titel in Leiste festlegen
hauptfenster.title("Ball bewegen")
# Zeichenfläche mit einer Größe von 300 X 200 erzeugen
# (canvas = engl. für Leinwand)
zeichenflaeche = Canvas(master=hauptfenster, width=300, height=200, bg="lightgreen")
# Erzeugte Zeichenfläche auf Hauptfenster packen
zeichenflaeche.pack()
# Einen Ball auf der Zeichenfläche anlegen
ball = zeichenflaeche.create_oval(10,100,40,130, fill="yellow")
# Prozedur aufrufen um den Ball zu bewegen
# Warte 100 ms (Millisekunden)
zeichenflaeche.after(100,ball_hin_und_her_bewegen)
# Erst mit Ausführung des folgenden Befehls wird das Hauptfenster
# mit Zeichenfläche und Ball sichtbar.
hauptfenster.mainloop()
XML
XML
Empfohlene Links:
https://docs.python.org/3/library/xml.etree.elementtree.html
https://www.delftstack.com/de/howto/python/python-xml-parser/
Stand: Juni 2025