Python 2.7.14 | Anaconda, Inc. |IPython 5.4.1
Я не понимаю, почему в зависимости от того, как я даю аргументы для pickle, я получаю желаемый результат или ошибку. Пожалуйста, посмотрите на этот пример:
import urllib
import pickle
p= pickle.load(urllib.urlopen("http://www.pythonchallenge.com/pc/def/banner.p"))
link='http://www.pythonchallenge.com/pc/def/banner.p'
q= pickle.load(urllib.urlopen(link))
и я получаю данные для p и q (список из 23 элементов)
Однако, если я пытаюсь:
f = urllib.urlopen(link)
r= pickle.load(f)
, я получаю:
raise EOFError
ЕслиЯ пытаюсь:
myfile = f.read()
s= pickle.load(myfile)
Я получаю:
AttributeError: 'str' object has no attribute 'readline'
Я ищу в SO похожие решения, но мне не удалось найти решение, которое могло бы дать мне ответ.
Может ли кто-нибудь помочь мне понять, почему r и s потерпели неудачу, когда q и f выглядят одинаково для меня?
****** РЕДАКТИРОВАНО НА ОТВЕТ ДЭВИС ГЕРРИНГ ********
import urllib
import pickle
link="http://www.pythonchallenge.com/pc/def/banner.p"
f = urllib.urlopen(link)
#myfile = f.read()
r= pickle.load(f)
Удаление myfile = f.read (), заставляет r работать.Ты был прав!Теперь я понимаю ваш ответ, я не могу прочитать f и использовать его в load ().Тем не менее, это выглядит, читая f изменения f?
Хорошо, я нашел ответ на эту тему здесь