ich ein Python-Skript haben, die JSON in eine Datei mit Inhalt schreibt, der wie folgt aussieht:Unicode Problem versucht JSON-Datei zu verarbeiten
{
"album": "Night Hawk",
"album_artist": "Coleman Hawkins with Eddie \u201cLockjaw\u201d Davis",
"artist": "Coleman Hawkins with Eddie \u201cLockjaw\u201d Davis",
"bitrate": 744,
...
}
Die Datei auf den Server und verarbeitet mit diesem hochgeladen:
with open(settings.JSON_UPLOAD_DIRECTORY + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
Dies funktioniert ohne Fehler auf meinem MacOS-Entwicklungsserver. Es hat bis jetzt auch mehrere Tausend Dateien auf meinem Deployment Server verarbeitet. Mit einem Mal erhalte ich diese Fehlermeldung:
22. with open(settings.JSON_UPLOAD_DIRECTORY + f.name, 'wb+') as destination:
Exception Value: 'ascii' codec can't encode character '\u201c' in position 81: ordinal not in range(128)
ich andere Beiträge über das hier gelesen habe, ohne zu einem Verständnis zu kommen, was ich falsch mache. Ich führe Python3.6. Meine Frage ist, muss ich die Anweisung anpassen, die die Datei im Speicher zum Schreiben öffnet, oder gibt es ein Problem mit der Codierung der JSON-Datei selbst.
Was ist 'f'? Das std-lib 'json'-Modul hat keine Methode' chunks', soweit ich das sehen kann. – lenz
'json.dump' und Freunde arbeiten' str' Daten, so dass Sie Ausgabedateien im Textmodus ("wt") öffnen müssen. Außerdem hat 'json.dump' einen Parameter' sure_ascii', der hilfreich sein kann. – lenz
@lenz 'f' ist die Variable, die ich für die "im Speicher" -Datei verwendet habe, die ich auf die Festplatte schreibe. Ich sollte das wahrscheinlich aus Gründen der Klarheit ändern. –