Python String encoding - Dateiname

str (Datei.Key) = '1011/101011/Dateiname'

newFileName = str(file.key)

Aber wenn ich den Code ausführe, bekomme ich:

UnicodeEncodeError: 'ASCII Codec' kann Zeichen in Position nicht codieren   x-y: Ordnungszahl nicht im Bereich (128)

Ich muss den Dateiname analysieren und dann von s3 Server herunterladen. Wie bekomme ich nur 'Dateiname'?

5
Bitte posten Sie einen vollständigen und minimalen Testfall.
hinzugefügt der Autor Michael Hoffman, Quelle
Erstellen Sie ein Skript, das so kurz wie möglich ist, aber immer noch diesen Fehler erzeugt. Setzen Sie dieses Skript in diese Frage sowie die vollständigen Ergebnisse der Ausführung (nicht nur eine Zeile des Traceback). Dafür gibt es zwei gute Gründe: (1) Es stellt sicher, dass Sie genügend Informationen veröffentlichen, damit wir Ihnen helfen können. und (2) wenn Sie diese Übung oft machen, wird es für Sie offensichtlich sein, wo der Fehler liegt. Darüber hinaus haben Sie ein Amazon-s3-Tag für diese Frage, aber wie geschrieben, scheint es nichts mit Amazon S3 zu tun. Das ist verwirrend.
hinzugefügt der Autor Michael Hoffman, Quelle
Was meinen Sie?
hinzugefügt der Autor Ron D., Quelle
Entschuldigung für die verpassten Informationen. aber @Koert hat meine Frage beantwortet. Das Problem war, dass ich versucht habe, Code von Python 2.7 auf Mac OS auf Linux-Server mit Python 2.5.2 zu importieren und es gibt Diffrences. Ich wollte nach Begriffen in newFileName suchen. file.key ist ein s3-Schlüssel (aus einem Bucket). Aber wie gesagt, Koert hat mein Problem gelöst. Danke für die Hilfe!
hinzugefügt der Autor Ron D., Quelle
Wir würden gerne sehen, was file.key eigentlich ist (der Typ, wie es dazu kam). Außerdem sagen Sie uns nicht, was Sie mit newFileName tun möchten, was für eine vorgeschlagene Alternative sehr relevant sein kann. Geben Sie nach Möglichkeit etwas an, das ein Beantworter ausführen könnte, um das Problem zu erkennen und zu untersuchen.
hinzugefügt der Autor Ondergetekende, Quelle
Was es sagt: Veröffentlichen Sie den geringsten Code, der das Problem veranschaulicht.
hinzugefügt der Autor kindall, Quelle

1 Antworten

Du hast viel zu wenig Kontext gepostet, um eine vernünftige Antwort zu geben, aber ich werde es trotzdem versuchen.

Der Dateiname, den Sie erstellen möchten, enthält scheinbar nicht-ASCII-Zeichen, die nicht automatisch in eine Standard-Str in Python 2.x konvertiert werden können.

Wenn Sie str durch unicode ersetzen, können Sie die Notwendigkeit der Konvertierung insgesamt vermeiden. Wenn Sie in einem anderen Teil Ihres Codes eine str verwenden müssen, könnten Sie versuchen, sie wie folgt zu codieren: newFileName = unicode (file.key) .encode ('ascii', 'ignore') . Beachten Sie, dass in meinem Beispiel nicht konvertierbare Zeichen weggelassen werden.

2
hinzugefügt