Maison >développement back-end >Tutoriel Python >Comment convertir un objet Bytes en chaîne dans Python 3 ?
Conversion d'octets en chaîne dans Python 3
Problème :
Vous avez capturé le sortie standard d'un programme externe dans un objet bytes et doit l'afficher sous forme de chaîne. Par exemple :
import subprocess p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE) stdout, _ = p.communicate()
Cela donnera un objet bytes comme :
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n'
Votre objectif est de convertir cet objet bytes en une chaîne Python standard.
Solution :
Pour convertir un objet bytes stdout en chaîne dans Python 3, utilisez le méthode decode(). Cette méthode prend l’encodage de l’objet bytes comme argument. Voici comment procéder :
decoded_stdout = stdout.decode("encoding")
Choisir l'encodage :
Le paramètre encoding spécifie le jeu de caractères utilisé pour décoder les octets. Dans l’exemple donné, UTF-8 est considéré comme le codage par défaut. Cependant, il est important d'utiliser le codage réel de vos données.
Si vous ne connaissez pas le codage, vous pouvez essayer d'utiliser "utf-8". Alternativement, vous pouvez utiliser une bibliothèque comme chardet pour détecter automatiquement l'encodage.
Exemple :
Utilisation d'UTF-8 comme encodage supposé :
decoded_stdout = stdout.decode("utf-8")
Vous pouvez maintenant imprimer votre chaîne décodée :
print(decoded_stdout) # Output: # -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!