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: 464
» Foren-Beiträge: 641

Komplettstatistiken

Benutzer Online
Momentan sind 16 Benutzer online
» 0 Mitglieder
» 11 Gäste
AhrefsBot, Bing, DotBot, Google, bot

Aktive Themen
Friday - 05:00 CST: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 2 Stunden
» Antworten: 0
» Ansichten: 0
Daten aus Tabelle in eine...
Forum: Programmieren
Letzter Beitrag: Joopi
Vor 2 Stunden
» Antworten: 0
» Ansichten: 0
Friday - 04:00 CST: Not a...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Vor 3 Stunden
» Antworten: 0
» Ansichten: 0
Thursday - 17:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Heute, 02:17
» Antworten: 0
» Ansichten: 8
Thursday - 09:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 07:08
» Antworten: 0
» Ansichten: 11
Thursday - 02:00 CST: Not...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 12:44
» Antworten: 0
» Ansichten: 9
Wednesday - 17:00 CST: No...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
Gestern, 03:24
» Antworten: 0
» Ansichten: 12
Stichsäge zur Bandsäge um...
Forum: Antiheimwerker
Letzter Beitrag: Joopi
Gestern, 12:17
» Antworten: 0
» Ansichten: 9
Wednesday - 13:00 CST: No...
Forum: Wetter in Little Rock
Letzter Beitrag: Joopi
20-11-2024, 11:32
» Antworten: 0
» Ansichten: 8
Ein-Zapfen-Eckverbindung
Forum: Antiheimwerker
Letzter Beitrag: Joopi
20-11-2024, 09:25
» Antworten: 0
» Ansichten: 9

 
  Hochkomma als Textstandard entfernen
Geschrieben von: Joopi - 10-02-2023, 06:32 - Forum: Excel und LibreOffice Calc - Keine Antworten

Ich hatte das Problem, dass ein Datum nicht als Datum, sondern als Text formatiert war. Mit einem führenden Hochkomma (single quote) wurde früher,  aber wohl auch noch heute, gerne ein Wert in einer Zelle als Text dargestellt. Dabei scheint es sich nur um ein Formatierungszeichen zu handeln, denn bei der Länge des Wertes wird das Hochkomma nicht mitgezählt.

Der Eintrag in der Zelle wurde linksbündig geschrieben und sah wie folgt aus:


Zitat:'08.01.1989


Wenn es nur ein Tabelleneintrag ist, dann kan man schnell das Hochkomma entfernen und schon ist der Wert so zu formatieren, wie man es wünscht. Bei mehr als 400 Werten in der Tabelle würde dieses Vorgehen eine Fleißarbeit und Fingerübung darstellen.

Wie gesagt, bei der Längenberechnung wird das Hochkomma nicht mitgezählt. Die Länge-Funktion gibt als Ergebnis 10 aus. Daher war es auch nicht verwunderlich, dass mit /Bearbeiten/Suchen und Ersetzen kein Erfolg zu erzielen war. Das Hochkomma blieb hartnäckig in der Zelle.

Die Lösung war dann folgende Kombination der Funktionen Wert und Wechseln (Textdatum steht in Zelle D12):

Code:
=WERT(WECHSELN(D12;"'";""))

Das Formelergebnis lautet: 32516

Und wenn die Zelle mit tt.mm.jjjj formatiert wird, dann sieht das Datum nach meinem Geschmack aus: 08.01.1989

Drucke diesen Beitrag

Information Code vereinfachen, wenn eine Textdatei geöffnet wird
Geschrieben von: Joopi - 01-02-2023, 10:16 - Forum: Programmieren - Keine Antworten

Wie immer gibt es verschiedene Wege, um etwas zu erreichen. Das Öffnen einer Datei zum Lesen kann wie folgt programmiert werden:

Code:
with open("text.txt", "r") as f:
    text = f.read()
    print(text)

Bei diesem Code muss nicht explizit die Datei mit einer close-Anweisung wieder geschlossen werden.

Drucke diesen Beitrag

  Darstellung der Tageszeit
Geschrieben von: Joopi - 23-01-2023, 10:30 - Forum: Programmieren - Keine Antworten

Nicht immer, und schon gar nicht überall, wird die Zeit wie bei uns im 24-Stunden-Modus angezeigt.

In den USA, wohl auch in Kanada, ist immer noch die 12-Stunden-Anzeige mit am und pm angesagt.

Und so ist es auch nicht verwunderlich, dass in Python oftmals die 12-Stunden-Anzeige als default-Wert steht.

Natürlich ist das zu Umgehen, indem die richtige Formatierung der Zeitausgabe angewandt wird. Oftmals ist es nur eine Kleinigkeit, die über 12- bzw. 24-Stunden-Anzeige entscheidet.

Mit dem nachfolgenden Code wird die 12-Stunden-Anzeige für 08:23:10 ausgegeben (I):

Code:
zstart = datetime.datetime.fromtimestamp(startzeit).strftime("%I:%M:%S")

Mit dem nachfolgenden Code wird die 24-Stunden-Anzeige für 20:23:10 ausgegeben (H):
Code:
zstart = datetime.datetime.fromtimestamp(startzeit).strftime("%H:%M:%S")

Drucke diesen Beitrag

  Bildbearbeiter wird schneller
Geschrieben von: Joopi - 23-01-2023, 10:19 - Forum: Programmieren - Keine Antworten

Mit einem Shellskript bearbeite ich Bilder, die in diversen Ordner organisiert sind. Die Bilder werden geprüft, ggf. in jpg-Format konvertiert und auf eine maximale Seitenlänge von 1.024 Pixel verkleinert.

Das Shellskript habe ich nun in einem Pythonskript nachgebaut. Es sind die gleichen Funktionen enthalten.

Zunächst hatte ich den Gedanken, dass das Shellskript wesentlich schneller sein würde als das Pythonskript. Ein Test hat aber gezeigt, dass dem nicht so ist. Und das hat mich schon verwundert. Zumal das Pythonskript noch verbesserungswürdig ist.

Natürlich hat der Test und das Testresultat keine wissenschaftliche Grundlage, aber interessant finde ich es trotzdem. Hier sind die Ergebnisse:

Shellskript:

Zitat:Das ist die gemessene Zeit in Sekunden:  458

Das ist die gemessene Zeit in  Minuten:  7.63 --> 00:07:38
Das ist die gemessene Zeit in  Stunden:  .12

Pythonskript:
Zitat:Das war die Startzeit: 18:07:26

Das war die Endzeit  : 18:14:05
Das ist die Dauer    : 00:06:39

Drucke diesen Beitrag

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