Maison >développement back-end >Tutoriel Python >Comment convertir des objets octets de commandes externes en chaînes en Python ?

Comment convertir des objets octets de commandes externes en chaînes en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 09:52:09803parcourir

How Do I Convert Bytes Objects from External Commands to Strings in Python?

Encodage et décodage d'octets en Python : guide de conversion de chaînes

Les objets Bytes sont couramment rencontrés lors de l'interaction avec des programmes externes ou de la manipulation de données binaires. . Pour travailler efficacement avec eux, une conversion vers et depuis des chaînes peut être nécessaire. Cet article abordera un problème spécifique concernant la conversion d'un objet bytes contenant la sortie d'une commande externe en une chaîne Python normale.

Le problème : convertir des octets en chaîne

Prenons l'exemple suivant de Python 3 :

>>> from subprocess import *
>>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
>>> stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2\n'

La variable stdout contient un objet bytes représentant la sortie de 'ls -l' commande. Pour l'imprimer dans un format lisible par l'homme, il doit être converti en chaîne.

Solution : Utilisation de la méthode Decode

La méthode decode() est utilisée pour convertir un objet bytes en chaîne. Il prend un paramètre d'encodage, qui spécifie l'encodage des caractères des données dans l'objet bytes.

>>> stdout_str = stdout.decode('utf-8')
>>> print(stdout_str)
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar  3 07:03 file2

Dans cet exemple, nous spécifions 'utf-8' comme encodage car il s'agit d'un encodage courant pour le texte. données. Cependant, il est important d'utiliser le codage correct pour les données spécifiques en cours de traitement.

Remarque :

Bien que la solution ci-dessus fonctionne bien pour convertir des objets octets représentant des données texte , il est important de noter que tous les objets bytes ne contiennent pas de texte. Pour gérer les données binaires, différentes techniques peuvent être nécessaires.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn