In Anaconda / Spyder geschriebenes Skript lässt sich nicht ausführen (Bildbearbeitung mit Pillow)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lukpau
User
Beiträge: 2
Registriert: Dienstag 16. Januar 2018, 17:59

Hallo Leute,

ich taste mich gerade erst an Python ran und habe ein Problem. Hoffentlich könnt ihr mir weiterhelfen.

Folgenden Code habe ich in der Programmierumgebung von Anaconda bzw. Spyder geschrieben. Hier lässt er sich nicht ausführen und zeigt gleich in Zeile 10 den Fehler "Invalid character in identifier". Die Datei: "logo_leuphana.png" liegt im selben Verzeichnis wie das Skript und heißt auch genau so. Was habe ich falsch gemacht?

Wenn ich jedoch die einzelnen Befehle in der Shell von Python ausführe, funktioniert der Code. Woran liegt das?

Hier der Code

Code: Alles auswählen

#! python3
# resizeAndAddLogo.py - Ändert die Größe aller Bilder im Arbeitsverzeichnis,
# sodass sie in ein Quadrat von 300 x 300 Pixel passen, und fügt in der
# unteren rechten Ecke catlogo.png hinzu

import os
from PIL import Image

SQUARE_FIT_SIZE = 300
LOGO_FILENAME = ‘logo_leuphana.png’

logoIm = Image.open(LOGO_FILENAME) 
logoWidth, logoHeight = logoIm.size

os.makedirs(‘withLogo’, exist_ok=True)
# Durchläuft alle Bilder im Arbeitsverzeichnis
for filename in os.listdir(‘.’):
   if not (filename.endswith(‘.png’) or filename.endswith(‘.jpg’)) \
      or filename == LOGO_FILENAME:
         continue # Überspringt Nicht-Bilddateien und die Logodatei selbst

   im = Image.open(filename)
   width, height = im.size
   
# Prüft, ob die Bildgröße geändert werden muss
if width > SQUARE_FIT_SIZE or height > SQUARE_FIT_SIZE:
   # Berechnet die neue Breite und Höhe
   if width > height:
      height = int((SQUARE_FIT_SIZE / width) * height)
      width = SQUARE_FIT_SIZE
   else:
      width = int((SQUARE_FIT_SIZE / height) * width)
      height = SQUARE_FIT_SIZE

   # Ändert die Bildgröße
   print(‘Resizing %s…’ % (filename))
      im = im.resize((width, height))

# Prüft, ob die Bildgröße geändert werden muss

   # Fügt das Logo hinzu
   print(‘Adding logo to %s…’ % (filename))
   im.paste(logoIm, (width - logoWidth, height - logoHeight), logoIm)

   # Speichert die Änderungen
   im.save(os.path.join(‘withLogo’, filename))

# TODO: Alle Dateien im Arbeitsverzeichnis durchlaufen

# TODO: Prüfen, ob die Bildgröße geändert werden muss

# TODO: Neue Breite und Höhe berechnen

# TODO: Bildgröße ändern

# TODO: Logo hinzufügen

# TODO: Änderungen speichern
Und noch ein Screenshot von der Programmierumgebung
Bild

Was das Programm machen soll ist glaube ich selbsterklärend: Ordner nach Bildern durchsuchen -> Größe auf 300 x 300 Pixel ändern -> Logo hinzufügen -> in neuem Ordner speichern

Vielen Dank für eure Hilfe im Voraus.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du meinst, du hast den Code falsch aus dem Internet abgeschrieben. Hier steht "dein" Code:

https://github.com/jivoi/junk/blob/mast ... AddLogo.py

Und da sieht man auch, das du die falschen Anfuehrungszeichen benutzt. Einfache ' oder " funktionieren, du benutzt was komisches anderes.
eckhard
User
Beiträge: 33
Registriert: Montag 14. Dezember 2015, 10:06
Wohnort: Karlsruhe

__deets__ und Lukpau, das komisch Andere sind die beiden Unicode Zeichen "left single quotation mark" (U+2018, Utf8 0Xe28098)
und "right single quotation mark" (U+2019, Utf8 0Xe28099). Richtig wäre das Unicode Zeichen U+0027 (was auch ein ASCII Zeichen ist und
deshalb in UTF8 als 0X27 codiert wird_.

Eckhard
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lukpau: daneben sind auch die Einrückungen kaputt.
Lukpau
User
Beiträge: 2
Registriert: Dienstag 16. Januar 2018, 17:59

Vielen Dank Leute. Ihr wart eine große Hilfe!

@eckhard was genau meinst du damit? Wo kann ich die Unicode-Zeichen einsehen? Und was muss ich ändern? Danke!
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lukpau: kopier doch einfach aus __deets__ Link, dann sind auch all die anderen Fehler ausgeräumt.
Antworten