Подтвердить что ты не робот

Попытка написать объект cPickle, но получить ошибку типа атрибута write

При попытке применить какой-то код, который я нашел в Интернете в iPython, появляется ошибка:

TypeError                                 Traceback (most recent call last)
    <ipython-input-4-36ec95de9a5d> in <module>()
     13     all[i] = r.json()
     14 
---> 15 cPickle.dump(all, outfile)

TypeError: argument must have 'write' attribute

Вот что я сделал по порядку:

outfile = "C:\John\Footy Bants\R COMPLAEX MATHS"

Затем я вставил в следующий код:

import requests, cPickle, shutil, time

all = {}
errorout = open("errors.log", "w")

for i in range(600):
    playerurl = "http://fantasy.premierleague.com/web/api/elements/%s/"
    r = requests.get(playerurl % i)

    # skip non-existent players
    if r.status_code != 200: continue

    all[i] = r.json()

cPickle.dump(all, outfile)

Здесь оригинальная статья, чтобы дать вам представление о том, чего я пытаюсь достичь:

http://billmill.org/fantasypl/

4b9b3361

Ответ 1

Второй аргумент cPickle.dump() должен быть файловым объектом. Вместо этого вы передали строку, содержащую имя файла.

Вам нужно использовать функцию open(), чтобы открыть файл файл для этого имени файла, а затем передать файл файл в cPickle:

with open(outfile, 'wb') as pickle_file:
    cPickle.dump(all, pickle_file)

См. раздел раздел "Чтение и запись файлов" учебника Python, в том числе, почему использование with при открытии файла - хорошая идея (это автоматически закрывается для вас).