GNU/Linux >> Znalost Linux >  >> Linux

Nelze rozdělit, je vyžadován objekt podobný bajtům, nikoli 'str'

Použijte decode() správně:buď ve dvou krocích (pokud chcete znovu použít blah ):

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

nebo inline (pokud jej potřebujete na jedno použití):

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

Váš problém s používáním decode() bylo, že jste nepoužili jeho návratovou hodnotu. Všimněte si, že decode() ne změnit objekt (blah ) k něčemu přiřadit nebo předat:

# WRONG!
blah.decode()

VIZ TAKÉ:
decode docs.


Pokud se vaše otázka scvrkává na toto:

Zkoušel jsem použít dekódování a kódování, ale stále na mě křičí, že metoda rozdělení nemůže použít datový typ.

Chybu lze demonstrovat následujícím kódem:

>>> 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'

Za účelem rozdělení bytes , bytes objekt musí být také poskytnut. Oprava je jednoduše:

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

Linux
  1. Chyba OpenStack Neutron db_sync – Nelze přidat sloupec NOT NULL s výchozí hodnotou NULL [Vyřešeno]

  2. Ovladač karty Nvidia nebyl detekován:Žádná nastavení a nelze použít Hdmi?

  3. libstdc++.so.5:nelze otevřít soubor sdíleného objektu - ale knihovna je nainstalovaná a aktuální

  1. Kompilace Gcc nemůže vypočítat příponu objektových souborů:nelze kompilovat

  2. CHYBA:ld.so:objekt LD_PRELOAD nelze předem načíst:ignorováno

  3. Chyba při provádění - verze `Qt_5' nebyla nalezena, vyžadováno

  1. ImportError:libtk8.6.so:nelze otevřít soubor sdíleného objektu:Žádný takový soubor nebo adresář

  2. CHYBA:ld.so:objekt 'libgtk3-nocsd.so.0' z LD_PRELOAD nelze předem načíst

  3. bash:ulimit:velikost souboru jádra:nelze změnit limit:Operace není povolena