Jestem nowy w programowaniu. Właśnie kupiłem książkę dla początkujących w Python. W nim mam ten kod:

name = input("name")
email = input("whats ure email:) 
favoriteband = input("ure fav band") 
outputString = name + "|" email + "|" + favoriteband 
fileName = name + ".txt"
file = open(fileName, "wb") 
file.write (outputString) 
print (outputString , " saved in ", fileName) 
file.close ()

Według książki, ale dostałem ten błąd:

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

Nie mam wskazówki Jak naprawić, a książka nie wyjaśnia tego również.

0
pio 27 luty 2019, 17:00

2 odpowiedzi

Najlepsza odpowiedź

Zrobiłem kilka edycji (zamknięcie cytatów i brakujące +):

name = input("name:")
email = input("whats ure email:")
favoriteband = input("ure fav band:")

outputString = name + " | " + email + " | " + favoriteband 
fileName = name + ".txt"
file = open(fileName, "w") #opened in write mode but not in binary
file.write (outputString) 
print (outputString , " saved in ", fileName) 
file.close()

Dostajesz ten błąd, ponieważ piszesz w trybie binarnym, stąd b w wb

file = open(fileName, "wb")

Spróbuj tego zamiast tego:

file = open(fileName, "w")

0
faruk13 27 luty 2019, 19:48

Przejrzyjmy to:

name = input("Your name: ")
email = input("Your email: ")

Najbliższe cytaty są potrzebne, jak wskazano.

outputString = name + "|" + email + "|" +  favoriteband 

outputString brakowało + przed email

Wreszcie musimy przepisać do zarządzania plikami:

with open(fileName, "a") as file:
  file.write (outputString) 
  print (outputString , " saved in ", fileName) 

Pisanie tego jako with oświadczenie gwarantuje, że będzie się zamknąć. Używanie open(..., "a") otwiera plik w trybie "dołącz" i umożliwia pisanie wielu strun do pliku o tej samej nazwie.

Wreszcie, jeśli mogę ewentualny, nie jestem fanem tej książki do tej pory.

Edytuj: Oto cały kod z poprawkami, w nadziei na cię tam.

name = input("name")
email = input("whats ure email:") 
favoriteband = input("ure fav band") 
outputString = name + "|" + email + "|" +  favoriteband 
fileName = name + ".txt"
with open(fileName, "a") as file:
  file.write (outputString) 
  print (outputString , " saved in ", fileName) 

Możesz zweryfikować to działa z:

with open(fileName, "r") as file:
  print(file.read())
1
Charles Landau 27 luty 2019, 14:22