TypeError: ein bytes-Objekt wie erforderlich ist, nicht 'str' beim schreiben in eine Datei in Python ist3

Ich habe vor kurzem migriert Py 3.5.
Dieser code wurde ordnungsgemäß in Python 2.7:

with open(fname, 'rb') as f:
    lines = [x.strip() for x in f.readlines()]

for line in lines:
    tmp = line.strip().lower()
    if 'some-pattern' in tmp: continue
    # ... code

Nach dem Upgrade auf 3.5, ich bin immer die:

TypeError: a bytes-like object is required, not 'str'

Fehler in der letzten Zeile (das pattern-search-code).

Ich habe versucht, mit der .decode() Funktion auf beiden Seiten der Anweisung, auch versucht:

if tmp.find('some-pattern') != -1: continue

- ohne Erfolg.

Konnte ich lösen fast alle 2:3 Themen schnell, aber diese kleine Aussage nervt mich.

  • Warum sind Sie öffnen die Datei im binary-Modus, aber behandeln Sie es als text?
  • Dank für das Auffinden der Datei-öffnen-Modus! Ändern Sie text-Modus-gelöst ist das Problem... der code hatte funktioniert zuverlässig in Py2k seit vielen Jahren, obwohl...
  • siehe: python.org/dev/peps/pep-0404/#strings-and-bytes
  • Ich bin die Begegnung mit dieser zu, wo ich Anfragen result = requests.get und ich Versuch x = result.content.split("\n"). Ich bin ein wenig verwirrt durch die Fehlermeldung, da scheint es zu implizieren, dass result.content ist ein string, der .split() die eine Byte-Objekt wie..?? ( "ein bytes-Objekt wie erforderlich ist, nicht 'str"')..
InformationsquelleAutor masroore | 2015-10-10
Schreibe einen Kommentar