Hallo, Gast
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.

Benutzername
  

Passwort
  





Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 521
» Foren-Beiträge: 741

Komplettstatistiken

Benutzer Online
Momentan sind 6 Benutzer online
» 0 Mitglieder
» 3 Gäste
AhrefsBot, Crawl, bot

Aktive Themen
Sunday - 03:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 12:15
» Antworten: 0
» Ansichten: 16
Saturday - 03:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
05-07-2025, 12:44
» Antworten: 0
» Ansichten: 25
Friday - 15:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
05-07-2025, 12:44
» Antworten: 0
» Ansichten: 29
Thursday - 03:00 CDT: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
03-07-2025, 11:48
» Antworten: 0
» Ansichten: 35
Wednesday - 06:00 CDT: No...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
02-07-2025, 03:46
» Antworten: 0
» Ansichten: 37
Tuesday - 14:00 CDT: Not ...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
01-07-2025, 11:46
» Antworten: 0
» Ansichten: 39
Monday - 09:00 CDT: Hazy,...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
30-06-2025, 06:33
» Antworten: 0
» Ansichten: 40
Monday - 05:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
30-06-2025, 02:34
» Antworten: 0
» Ansichten: 37
Sunday - 16:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
30-06-2025, 01:44
» Antworten: 0
» Ansichten: 38
Friday - 04:00 CDT: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
27-06-2025, 01:54
» Antworten: 0
» Ansichten: 45

 
Information Große Zahlen für Menschen lesbar darstellen
Geschrieben von: Joopi - 23-01-2023, 07:20 - Forum: Programmieren - Keine Antworten

Dann und wann sind Zahlen so groß, dass diese kaum auf den ersten Blick lesbar sind.

Es gibt aber die Möglichkeit, in der Konsole wie auch in einem Pythonskript, solche Zahlen, die meist eine Größe darstellen, für Menschen besser lesbar zu machen.

Der nachfolgende Codeschnipsel zeigt es:

Code:
from humanize import naturalsize
import os

file_size = os.path.getsize(bilddatei)

print(f"Ich bin so groß: {naturalsize(file_size)}")

Drucke diesen Beitrag

  Bilder auf eine maximale Seitenbreite/-höhe verkleinern
Geschrieben von: Joopi - 23-01-2023, 06:00 - Forum: Programmieren - Keine Antworten

Viele Bilder, die ich in meiner Sammlung habe, brauche ich nicht in der Originalgröße mehreren MegaBytes. Daher reduziere ich alle diese Bilder auf eine maximale Breite oder maximale Höhe von 1.024 Pixel.

In der Konsole erledige ich diese Aufgabe mit dem Tool ffprobe und muss mich mehr oder weniger um nichts kümmern. In Python sieht auch das anders aus.

Der folgende Codeschnipsel, der noch stark verbesserungswürdig ist, erledigt diese Aufgabe.

Code:
import os
import pathlib
from PIL import Image
import PIL

for bildordner in pathlib.Path(rename_ordner).iterdir():
    if bildordner.is_dir():
        os.chdir(bildordner)
        for bilddatei in pathlib.Path(os.getcwd()).iterdir():
            if bilddatei.is_file():
                imgfile = Image.open(rf"{bilddatei}")
                # Breite x Höhe.
                # Ausgabe in Tuple.
                # Der Maximalwert ist 1024 Pixel für Breite oder Höhe - je nach dem.
                width, height = imgfile.size
                if width > 1024 or height > 1024:
                    # Berechnung auf Grundlage des Maximalwertes von 1024
                    if width >= height:
                        verhaeltnis = height * 100 / width
                        widthnew = 1024
                        heightnew = verhaeltnis * widthnew / 100
                        newsize = (int(widthnew), int(heightnew))
                        imgfile = imgfile.resize(newsize)
                        imgfile = imgfile.save(bilddatei)
                    elif height > width:
                        verhaeltnis = width * 100 / height
                        heightnew = 1024
                        widthnew = verhaeltnis * heightnew / 100
                        newsize = (int(widthnew), int(heightnew))
                        imgfile = imgfile.resize(newsize)
                        imgfile = imgfile.save(bilddatei)
        os.chdir("..")

Drucke diesen Beitrag

  Andere Bildformate nach jpg konvertieren
Geschrieben von: Joopi - 23-01-2023, 04:43 - Forum: Programmieren - Keine Antworten

Grundsätzlich arbeite ich mit Bildern im jpeg-Format. Das betrifft war nicht die raw-Dateien aus der Fotografie, aber eben alle anderen Bilder. Sollte mir andere Bildformate vorliegen, so konvertiere ich diese in jpeg-Format.

Mit dem Tool convert in der Konsole ist das relativ einfach. In Python aber nicht. Hier muss bedacht werden, dass eine echte Konvertiertung nicht stattfindet, sondern ein neues Abspeichern. Dabei treten Probleme auf, die es unter convert so nicht gibt.

So ist z.B. zu beachten, dass png-Bilder einen transparenten Hintergrund haben können, jpeg-Bilder allerdings nicht. Daher ist der Alphakanal eines png-Bildes zu löschen. Das geht mit der Konvertierung von RGBA nach RGB. Ansonsten würde sich ein Bilder neu unter dem jpeg-Format nicht speichern lassen, wenn es in einem Pythonskript erfolgen soll.

Folgender Codeschnipsel läuft im Moment bei mir reibungslos (die Ursprungsdatei wird gelöscht!).

Code:
import os
import pathlib
from PIL import Image

for bildordner in pathlib.Path(rename_ordner).iterdir():
    if bildordner.is_dir():
        os.chdir(bildordner)
        for bilddatei in pathlib.Path(os.getcwd()).iterdir():
            if bilddatei.is_file():
                filename, file_extension = os.path.splitext(bilddatei)
                ext = file_extension
                if ext != ".jpg":
                    # print(bilddatei)
                    # print(ext)
                    # print(filename)
                    imgfile = Image.open(rf"{bilddatei}")
                    imgfile = imgfile.convert("RGB")
                    imgfile.save(rf"{filename}{extneu}")
                    os.remove(bilddatei)
        os.chdir("..")

Drucke diesen Beitrag

  Korrupte Bilddateien erkennen und löschen
Geschrieben von: Joopi - 23-01-2023, 04:01 - Forum: Programmieren - Keine Antworten

Ich durchforste immer wieder meine Bilder (Fotos), ob ggfs. korrupte Dateien dabei sind. Wenn diese Dateien schon kaputt sind, bemühe ich mich auch nicht mehr, diese zu prüfen und ggfs. aufwendig zu reparieren. Mit dem folgenden Codeschnipsel werden solche Dateien erkannt und gelöscht.

Code:
import os
import pathlib
from PIL import Image

for bildordner in pathlib.Path(rename_ordner).iterdir():
    if bildordner.is_dir():
        os.chdir(bildordner)
        for bilddatei in pathlib.Path(os.getcwd()).iterdir():
            if bilddatei.is_file():
                try:
                    imgfile = Image.open(bilddatei)
                    imgfile.verify()
                except (IOError, SyntaxError) as e:
                    print(bilddatei)
                    os.remove(bilddatei)
        os.chdir("..")

Drucke diesen Beitrag

  Unerwünschte Endung in Ordnernamen entfernen
Geschrieben von: Joopi - 22-01-2023, 08:56 - Forum: Programmieren - Keine Antworten

Dann und wann schleichen sich bei der Arbeit mit vielen Bildern in vielen Ordner leider Ordernamen ein, die nicht erwünscht sind. Diese sollen entfernt werden. Die unerwünschten Endungen stehen dabei in einer Liste, die dann je Ordner abzuarbeiten ist.

Code:
trash_endung = [".jpg", "_001.jpg", "_002.jpg", "(1).jpg", "(1).jpeg", "_1_.jpg", "_2_.jpg", "_1.jpg", ".jpeg", "yenc", "yEnc", ".par2", ".zip", ".rar"]

for bildordner in pathlib.Path(rename_ordner).iterdir():
    if bildordner.is_dir():
        basename = os.path.basename(bildordner)
        for endung in trash_endung:
            basename = basename.replace(endung, "")

Eine andere Möglichkeit wäre, die str.endswith() Methode zu verwenden, um zu überprüfen, ob der Name des Ordners mit einer unerwünschten Endung endet, und dann die entsprechende Endung zu entfernen.

Code:
trash_endung = [".jpg", "_001.jpg", "_002.jpg", "(1).jpg", "(1).jpeg", "_1_.jpg", "_2_.jpg", "_1.jpg", ".jpeg", "yenc", "yEnc", ".par2", ".zip", ".rar"]

for bildordner in pathlib.Path(rename_ordner).iterdir():
    if bildordner.is_dir():
        basename = os.path.basename(bildordner)
        for endung in trash_endung:
            print(endung)
            if basename.endswith(endung):
                basename1 = basename[:-len(endung)]
                os.rename(f"{rename_ordner}/{basename}", f"{rename_ordner}/{basename1}")
                break

Drucke diesen Beitrag

  Die Bestandteile von Ordner und Datei
Geschrieben von: Joopi - 22-01-2023, 07:49 - Forum: Programmieren - Keine Antworten

Dann und wann ist es wichtig, dass nur der Dateiname oder nur die Extension einer Datei zur Verfügung steht. Dazu dienen folgende Codezeilen:

Code:
filename = os.path.splitext("/media/user/index.html")

Ausgabe:

Zitat:Das ist filename:  /media/user/index




Code:
file_extension = os.path.splitext("/media/user/index.html")

Ausgabe: 

Zitat:Das ist file_extension:  .html




Code:
basename = os.path.basename("/media/user/index.html")

Ausgabe:

Zitat:Das ist basename:  index.html

Drucke diesen Beitrag

Exclamation Arbeitsverzeichnis prüfen
Geschrieben von: Joopi - 22-01-2023, 07:07 - Forum: Programmieren - Keine Antworten

Vor längerer Zeit hatte ich mal aus Unachtsamkeit mit Home-Verzeichnis geschrottet. Seitdem bin ich sehr vorsichtig, wenn ich auf meinem Hauptrechner programmiere und mich im Bereich der Ordner und Dateien bewege. Mittlerweile prüfen ich in dem Skript, ob das aktuelle Arbeitsverzeichnis nicht das Home-Verzeichnis ist.

Code:
def homedir_pruefen():
    if os.getcwd() == "/home/user":
        print(os.getcwd())
        sys.exit("Das falsche Arbeitsverzeichnis ist ausgewählt: /home/user")
    return

homedir_pruefen()

Der Vergleich Arbeitsordner und  Home-Ordner darf nicht mit einem Schrägstrich enden, da getcwd ihn auch nicht hat.
Bei der Angabe des Homeverzeichnisses darf am Ende kein / gesetzt werden, da os.getcwd() diesen auch nicht ausgibt.

Drucke diesen Beitrag

Lightbulb Tilix mit Layout starten
Geschrieben von: Joopi - 17-01-2023, 05:19 - Forum: Linux - Keine Antworten

Tilix ist ein Tiling-Manager und erlaubt es, verschiedene Terminfenster zu organisieren.

Derzeit nutze ich zwei Sessions, die jeweils in einer json-Datei gespeichert sind. Um diese beiden Sessions z.B. aus dem KDE-Menü zu starten, ist folgender Befehl notwendig, um direkt die Layout nutzen zu können:

Code:
tilix --session <pfad_zur_json_datei>/dateiname.json

Somit muss ich erst über das Tilix-Menü die json-Datei suchen und dann öffnen.

Drucke diesen Beitrag

  Niemand kann alles wissen, auch ChatGPT nicht
Geschrieben von: Joopi - 16-01-2023, 11:52 - Forum: Blog - Keine Antworten

Ich habe eine vermeindlich einfache Frage gestellt. 

Welchen Codenamen wird die nächste stabile Version von Debian haben?

Zitat:Ich habe keine Informationen darüber, welchen Codenamen die nächste stabile Version von Debian haben wird. Debian-Veröffentlichungen werden in der Regel alle zwei Jahre veröffentlicht und haben in der Regel einen Namen, der mit einem Buchstaben des Phonetischen Alphabets beginnt. Derzeit ist die aktuelle stabile Version von Debian "Bullseye" und die vorherige Version "Buster". Der Name der nächsten Version wird von Debian-Entwicklern bekannt gegeben, sobald er verfügbar ist.

Das ist leider falsch. Der nächste Codename "Bookworm" lauten. Das wusstest Du nicht?


Zitat:Es tut mir leid, dass ich die Informationen nicht aktueller hatte. Es ist richtig, dass der nächste Codename der stabile Version von Debian "Bookworm" lautet und es wurde offiziell von den Debian Entwicklern bestätigt. Ich entschuldige mich für die Verwirrung und irrtümliche Informationen.

Irgendwie hat das den Reiz, als würde ein Schachspieler gegen einen Schachcomputer spielen. Ok, ich kann kein Schach, aber komischen Fragen stellen.  Angel

Drucke diesen Beitrag

Information ChatGPT - Irrsinn oder Wahnsinn
Geschrieben von: Joopi - 14-01-2023, 10:51 - Forum: Blog - Keine Antworten

Heute habe ich mich erstmals etwas intensiver mit dem Chatprogramm ChatGPT befasst. Das browserbasierte Tool ist noch in der Erprobung, daher kann nicht alles funktionieren. Und das tut es auch nicht.

Allerdings, und das deckt sich mit den Eindrücken, die ich in diversen Videos erhalten konnte, ist ChatGPT in der Tat ein irrsinnig umfangreicher Wissensspeicher. Ich habe so einiges eingegeben und habe, soweit ich das ermitteln kann, richtige Antworten bekommen.

Allerdings fiel mir auf, dass die Antworten nicht immer vollständig ausgeschrieben wurden. Ich gehe mal davon aus, dass derzeit die Auslastung sehr hoch und die Technik noch nicht so umfangreich und skaliert ist, dass der Massenansturm bewältigt werden kann.

Zudem gab es häufig diesen Hinweis:

   

Es erschien mir zunächst so, dass sich das auf mich bezog. Ok, dachte ich, warte mal ab und versuche es noch einmal. Wenn ich mich dann wieder daran setzte, gab es den Hinweis, dass die Kapazitäten ausgeschöpft seien.

   

Fazit:

Für mich also Otto-Normal-Verbraucher erscheint ChatGPT wie ein Wunderwerk wie analog damals zu WikePedia in den Anfängen. Ob und wie sich diese Art der Wissensvermittlung durchsetzen kann, wird sich noch zeigen müssen. Die Angst der Softwareentwickler und -programmierer kann ich verstehen, auch wenn ich nicht daran glaube, dass es hier zu Massenentlassungen kommen wird.

Drucke diesen Beitrag