2016-07-08 6 views
1

Ich habe eine base64 Situation in Python ich nicht ganz herausfinden kann - wenn ich mein Skript ausführen:Python: Warum stimmt mein Base64-Dateiname nicht mit dem überein, was er sein sollte?

import rebus 
import os 

# Set directory 
os.chdir('/Users/Ryan/') 

# Filename from folder 
filename = 'Ryan20160708.txt' 

# Create the base64 of the filename 
filenameenc = rebus.urlsafe_b64encode(filename) 
filebase64 = filenameenc.rstrip() 

# Print these for developer 
print("Your filename is: " + filename) 
print("The base64 encoded filename is: " + filebase64) 

ich die folgenden Ergebnisse erhalten:

Your filename is: Ryan20160708.txt 
The base64 encoded filename is: UnlhbjIwMTYwNzA4LnR4dAoK 

Das größere Skript dafür ist in einem API-Beitrag verwendet, dass ich 500 Fehler immer wieder erhalten habe. Und das war, als ich den base64-Namen genauer untersuchte und erkannte, dass er nicht mit Dingen wie https://www.base64encode.org/ übereinstimmt, die UnlhbjIwMTYwNzA4LnR4dA== statt UnlhbjIwMTYwNzA4LnR4dAoK zurückgibt. Nur in den letzten paar Zeichen.

Nur was ich bemerkte, ist, dass, wenn ich meine Base64 in die Website einfüge und es zum Dateinamen zurückdekodieren, kommt es mit dem richtigen Dateinamen zurück (Ryan20160708.txt), aber es hat zwei Zeilenumbrüche darunter. Obwohl ich mit rstrip() schon alle zusätzlichen Leerzeichen davon abstreife - bin ich ziemlich fest. Irgendwelche Vorschläge?

+1

Sie bemerkt geben, dass Sie anrufen 'rstrip()' auf dem codierten Text, nicht wahr? –

Antwort

0

Wenn Sie die PyPI auf der CD lesen: https://pypi.python.org/pypi/rebus/0.2

Sie werden sehen, dass Rebus verwendet:

generieren base64-kodierten Strings von alphanumerischen Zeichen, bestehend nur.

Ich bezweifle, dass das ist, was Sie wollen, wenn Sie tatsächlich nach Base64-Codierung suchen. Sie wollen wahrscheinlich nur base64 wie:

import base64 
import os 

# Set directory 
os.chdir('/Users/Ryan/') 

# Filename from folder 
filename = 'Ryan20160708.txt' 

# Create the base64 of the filename 
filenameenc = base64.b64encode(filename) 
filebase64 = filenameenc.rstrip() 

# Print these for developer 
print("Your filename is: " + filename) 
print("The base64 encoded filename is: " + filebase64) 

Welche Sie

Your filename is: Ryan20160708.txt 
The base64 encoded filename is: 'UnlhbjIwMTYwNzA4LnR4dA==' 
Verwandte Themen