Essaie d'écrire une cPickle objet, mais à obtenir une "écriture" de l'attribut type de l'erreur
Lorsque vous essayez d'appliquer un peu de code que j'ai trouvé sur internet dans iPython, il est à venir avec une erreur:
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
Voici ce que j'ai fait dans l'ordre:
outfile = "C:\John\Footy Bants\R COMPLAEX MATHS"
Ensuite, j'ai collé dans le code suivant:
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)
Voici l'article original pour vous donner une idée de ce que je suis en train de réaliser:
http://billmill.org/fantasypl/
OriginalL'auteur Johnliquid | 2015-03-18
Vous devez vous connecter pour publier un commentaire.
Le deuxième argument de
cPickle.dump()
doit être un fichier objet. Vous avez passé dans une chaîne de caractères contenant un nom de fichier à la place.Vous devez utiliser le
open()
fonction pour ouvrir un fichier objet pour que le nom de fichier, puis passer le fichier objet àcPickle
:Voir le la Lecture et l'Écriture de Fichiers article de le tutoriel Python, y compris pourquoi à l'aide de
with
lors de l'ouverture d'un fichier est une bonne idée (ça va être fermée automatiquement pour vous).il m'est impossible de voir où vous êtes absent de l'indentation ici; le bloc sous la
with
déclaration ne doivent être en retrait, tout comme avec unif
ouwhile
oufor
déclaration.Le fichier "<ipython-entrée-12-77a5de8548f1>", line 7 playerurl = "fantasy.premierleague.com/web/api/elements/%s" ^ IndentationError: un bloc indenté
La flèche vers le haut est juste en dessous de playerurl
alors, avez-vous l'indentation qui ligne tout comme dans le billet de blog? Python nécessite l'utilisation des principaux espaces pour désigner des blocs. Peut-être vous avez besoin pour commencer avec le tutoriel Python à la place?
OriginalL'auteur Martijn Pieters