Je suis nouveau à Python et j'ai un problème qui me dérange.
J'utilise le code suivant pour obtenir une représentation sous forme de chaîne base64 de mon fichier Zip.
with open( "C:\\Users\\Mario\\Downloads\\exportTest1.Zip",'rb' ) as file:
zipContents = file.read()
encodedZip = base64.encodestring(zipContents)
Maintenant, si je génère la chaîne, elle est contenue dans une représentation b ''. Pour moi, ce n'est pas nécessaire et je voudrais l'éviter. Il ajoute également un caractère de nouvelle ligne tous les 76 caractères, ce qui est un autre problème. Existe-t-il un moyen d'obtenir le contenu binaire et de le représenter sans les caractères de nouvelle ligne et le b de fin et de début?
Juste pour comparaison, si je fais ce qui suit dans PowerShell:
$fileName = "C:\Users\Mario\Downloads\exportTest1.Zip"
$fileContentBytes = [System.IO.File]::ReadAllBytes($fileName)
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
J'obtiens la chaîne exacte que je recherche, pas de b '' et pas de\n tous les 76 caractères.
Depuis le base64 package doc:
"Encode les objets de type octets, qui peuvent contenir des données binaires arbitraires, et renvoient
bytes
contenant les données encodées en base64, avec des retours à la ligne (b"\n"
) inséré après tous les 76 octets de sortie, et en veillant à ce qu'il y ait une nouvelle ligne de fin, conformément à la RFC 2045 (MIME). "
Vous souhaitez utiliser
"Encode les objets de type octet en utilisant Base64 et retourne le
bytes
encodé."
Exemple:
import base64
with open("test.Zip", "rb") as f:
encodedZip = base64.b64encode(f.read())
print(encodedZip.decode())
La decode()
convertira la chaîne binaire en texte.
Utilisez b64encode
Pour encoder sans les sauts de ligne, puis décodez la chaîne binaire résultante avec .decode('ascii')
pour obtenir une chaîne normale.
encodedZip = base64.b64encode(zipContents).decode('ascii')