Python String-codering - bestandsnaam

str (file.key) = '1011/101011/bestandsnaam'

newFileName = str(file.key)

Maar wanneer ik de code uitvoer, krijg ik:

UnicodeEncodeError: 'ascii' codec kan tekens in positie niet coderen   x-y: ordinal niet binnen het bereik (128)

Ik moet wat ontleden op de bestandsnaam en het vervolgens van de s3-server downloaden. Hoe krijg ik gewoon 'bestandsnaam'?

5
Plaats een volledige en minimale testcase.
toegevoegd de auteur Michael Hoffman, de bron
Maak een script dat zo kort mogelijk is, maar deze fout blijft produceren. Zet dit script in deze vraag, evenals de volledige resultaten van het uitvoeren ervan (niet slechts één regel van de traceback). Daar zijn twee goede redenen voor: (1) het zorgt ervoor dat u genoeg informatie voor ons plaatst om u te helpen; en (2) door deze oefening vaak door te nemen, zal het u duidelijk zijn waar de fout ligt. Daarnaast heb je een Amazon-S3-tag op deze vraag, maar zoals geschreven, lijkt het niets met Amazon S3 te maken te hebben. Dit is verwarrend.
toegevoegd de auteur Michael Hoffman, de bron
wat bedoelt u?
toegevoegd de auteur Ron D., de bron
Sorry voor de gemiste informatie. maar @Koert heeft mijn vraag beantwoord. Het probleem was dat ik probeer om code van python 2.7 op MAC OS naar linux-server met python 2.5.2 te importeren en er zijn diffreneces. Ik wilde zoeken naar termen in newFileName. file.key is een s3-sleutel (vanuit een bucket). Maar zoals ik al zei, Koert loste mijn probleem op. Bedankt voor de hulp!
toegevoegd de auteur Ron D., de bron
We zouden graag zien wat file.key eigenlijk is (het type, hoe het is ontstaan). Ook vertel je ons niet wat je wilt doen met newFileName , wat erg relevant kan zijn voor een voorgesteld alternatief. Geef indien mogelijk iets dat door een beantwoorder kan worden uitgevoerd om het probleem te zien en te onderzoeken.
toegevoegd de auteur Ondergetekende, de bron
Wat het zegt: plaats de minste hoeveelheid code die het probleem aantoont.
toegevoegd de auteur kindall, de bron

1 antwoord

Je hebt veel te weinig context gepost om een ​​goed antwoord te geven, maar ik zal het toch proberen.

De bestandsnaam die u probeert te maken lijkt niet-ascii-tekens te bevatten, die niet automatisch in een standaard str in python 2.x kunnen worden omgezet.

Als u str door unicode vervangt, kunt u voorkomen dat conversie nodig is. Als u voor een ander onderdeel van uw code een str wilt gebruiken, kunt u het zo proberen te coderen: newFileName = unicode (file.key) .encode ('ascii', 'ignore') . Houd er rekening mee dat niet-converterenbare tekens in mijn voorbeeld worden weggelaten.

2
toegevoegd