GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible de diviser, un objet de type octets est requis, pas 'str'

Utilisez decode() correctement :soit en deux étapes (si vous souhaitez réutiliser blah ):

blah = blah.decode()
splitblah = blah.split("\n")
# other code that uses blah

ou en ligne (si vous en avez besoin pour un usage unique) :

splitblah = blah.decode().split("\n")

Votre problème avec l'utilisation de decode() c'est que vous n'avez pas utilisé sa valeur de retour. Notez que decode() n'est pas changer l'objet (blah ) pour l'assigner ou le transmettre à quelque chose :

# WRONG!
blah.decode()

VOIR AUSSI :
decode docs.


Si votre question se résume à ceci :

J'ai essayé d'utiliser decode et encode mais il me crie toujours que la méthode split ne peut pas utiliser le type de données.

L'erreur en question peut être démontrée par le code suivant :

>>> blah = b'hello world'  # the "bytes" produced by check_output
>>> blah.split('\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a bytes-like object is required, not 'str'

Afin de diviser bytes , un bytes objet doit également être fourni. Le correctif est simplement :

>>> blah.split(b'\n')
[b'hello world']

Linux
  1. Erreur OpenStack Neutron db_sync - Impossible d'ajouter une colonne NOT NULL avec la valeur par défaut NULL [Résolu]

  2. Pourquoi ne puis-je pas diviser un fichier .ape ?

  3. Impossible d'installer l'imprimante HP :l'installation du plug-in a échoué ?

  4. Pilote de carte Nvidia non détecté :aucun paramètre et impossible d'utiliser HDMI ?

  5. Impossible d'ajouter l'erreur Ppa L'utilisateur ou l'équipe n'existe pas ?

libpulse.so.0 :impossible d'ouvrir le fichier objet partagé :aucun fichier ou répertoire de ce type

leiningen ne peut pas s'exécuter en raison d'une exception de classe Java introuvable

ImportError :libtk8.6.so :impossible d'ouvrir le fichier objet partagé :aucun fichier ou répertoire de ce type

ERREUR :ld.so :l'objet 'libgtk3-nocsd.so.0' de LD_PRELOAD ne peut pas être préchargé

bash :ulimit :taille du fichier principal :impossible de modifier la limite :opération non autorisée

mount.nfs :rpc.statd n'est pas en cours d'exécution mais est requis pour le verrouillage à distance