String durchsuchen
Hallo,
jetzt zeigt er mir alle Mails an. Habe b'EXISTS' genommen.
Gehe ich recht in der Annahme das ich ein "search(criteria=u'UNSEEN', charset=None)" einbauen muss,
damit er mir nur die Anzahl der ungelesenen Mails anzeigt ?
print (select_info)
{b'UIDVALIDITY': 1426254117, b'READ-WRITE': True, b'RECENT': 0, b'MYRIGHTS': [b'"acdilrsw"'], b'PERMANENTFLAGS': (b'$MailFlagBit0', b'$MailFlagBit1', b'$NotJunk', b'$Forwarded', b'NotJunk', b'\\*', b'\\Draft', b'\\Answered', b'\\Flagged', b'\\Deleted', b'\\Seen'), b'EXISTS': 293, b'FLAGS': (b'$MailFlagBit0', b'$MailFlagBit1', b'$NotJunk', b'$Forwarded', b'NotJunk', b'\\Draft', b'\\Answered', b'\\Flagged', b'\\Deleted', b'\\Seen', b'\\Recent')}
jetzt zeigt er mir alle Mails an. Habe b'EXISTS' genommen.
Gehe ich recht in der Annahme das ich ein "search(criteria=u'UNSEEN', charset=None)" einbauen muss,
damit er mir nur die Anzahl der ungelesenen Mails anzeigt ?
print (select_info)
{b'UIDVALIDITY': 1426254117, b'READ-WRITE': True, b'RECENT': 0, b'MYRIGHTS': [b'"acdilrsw"'], b'PERMANENTFLAGS': (b'$MailFlagBit0', b'$MailFlagBit1', b'$NotJunk', b'$Forwarded', b'NotJunk', b'\\*', b'\\Draft', b'\\Answered', b'\\Flagged', b'\\Deleted', b'\\Seen'), b'EXISTS': 293, b'FLAGS': (b'$MailFlagBit0', b'$MailFlagBit1', b'$NotJunk', b'$Forwarded', b'NotJunk', b'\\Draft', b'\\Answered', b'\\Flagged', b'\\Deleted', b'\\Seen', b'\\Recent')}
@achim55: Du musst halt den richtigen Schlüssel für den Zugriff wählen. b'EXISTS' != 'EXISTS'. Bitte über den Unterschied und den Zusammenhang zwischen Bytes und Zeichenketten informieren. Der ist sehr wichtig.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Dazu kannst Du mal einen Blick in meine Signatur werfen
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ich weiß ...ich weiß
Bin ja am lernen und kann nun mal besser lernen wenn ich ein Projekt anfange.
Zu meiner Zeit war "Englisch" noch kein so großes Thema wie es heute ist. Deswegen komme ich mit vielen Anleitungen auf Englisch nicht so gut klar, und frage hier nach
Viele die, wie ich, auf die 60 zu gehen würden sich andere Hobbys suche die einfacher sind
Also Burschen, greift mir doch mal etwas unter die Arme oder gebt mir konkrete Hilfestellungen wie ich was
machen soll
Gruß
Achim
Bin ja am lernen und kann nun mal besser lernen wenn ich ein Projekt anfange.
Zu meiner Zeit war "Englisch" noch kein so großes Thema wie es heute ist. Deswegen komme ich mit vielen Anleitungen auf Englisch nicht so gut klar, und frage hier nach
Viele die, wie ich, auf die 60 zu gehen würden sich andere Hobbys suche die einfacher sind
Also Burschen, greift mir doch mal etwas unter die Arme oder gebt mir konkrete Hilfestellungen wie ich was
machen soll
Gruß
Achim
Dann herzlichen Glückwunsch zu diesem schönen Hobby. Geh' doch mal zu Usergroups oder zu einem Barcamp. Da kannst Du Dich auch prima auf deutsch unterhalten und Fragen stellen. Und das "programmierenglisch" ist nicht so schwer - einfach weiter einlesen, dann kommt das schon.achim55 hat geschrieben:Viele die, wie ich, auf die 60 zu gehen würden sich andere Hobbys suche die einfacher sind
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Das Thema Encoding und Unicode ist leider alles andere als "leichtgewichtig" - zumindest je nach Tiefe des Verständnisses. Iirc habe ich aber nicht nur englische Seiten verlinkt...achim55 hat geschrieben: Also Burschen, greift mir doch mal etwas unter die Arme oder gebt mir konkrete Hilfestellungen wie ich was
machen soll
Du musst Dich da einfach einlesen und parallel Dinge ausprobieren - so schwer ist es letztlich nicht
Wichtigstes Grundwissen ist eigentlich:
- Unicode != UTF-8, UTF-16 usw.
- Bei Python3 sind alle Strings Unicode-Objekte
- Alles an Zeichen was irgend wie in Dein Programm rein kommt, ist *kein* Unicode, sondern sind *codierte* Strings. Seien es die Literale im Code (also z.B. so etwas ``text = "Hallo Welt!"``), oder Texte aus Dateien oder aus einer Datenbank oder von einem Webservice usw.
- Immer wenn Zeichenketten in Dein Programm rein kommen, musst Du diese *decodieren*, um sie als Strings zu verwenden, also z.B. durch Angabe des Encodings bei ``open`` zum Einlesen von Textdateien. (Außer bei String-Literalen im Programmcode, bei denen das *automatisch* durch den Interpreter erledigt wird; wenn Deine Quelldatei anders als in UTF-8 vorliegt, musst Du dem Interpreter das sagen per ``# -*- coding: latin-1 -*-`` ganz oben im Script direkt nach einem Shebang).
- Immer wenn Du Zeichen aus Deinem Programm herausgibst, musst Du diese *encodieren*, also von Unicode in eine gängige Zeichencodierung wandeln. Dies gilt auch für ``print`` - leider kann man diesem kein Encoding übergeben, sondern Python wählt iirc immer das Default Encoding für Shells des OS. Saudumme Designentscheidung und echt *nervig*. Strings haben die ``encode``-Methode, mit denen man das Wandeln in Bytes vornehmen kann.
- Als Grundregel kannst Du Dir merken: Immer so früh wie möglich *decodieren* und so spät wie möglich *encodieren*. Mit codierten Bytes solltest Du nur arbeiten, wenn das für die Domäne besser ist, in der Du dich bewegst.
Habe ich etwas vergessen? Ich hoffe nichts wesentliches
Einen guten Überblick über Terminologien gibt imho die Seite utf8everywhere; auch wenn es auf Englisch ist, sollte der Abschnitt leicht verständlich sein.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@Hyperion: Die Bemerkung zu Python 2 ist IMHO unglücklich formuliert. Es gibt ”Zeichenketten” die Bytes (eventuell kodierten Text) enthalten (`str`) und ”echte” Unicode-Zeichenketten die Zeichen enthalten (`unicode`). Also letztlich genau wie in Python 3 wo die Datentypen `bytes` und `str` statt `str` und `unicode` heissen.