2015-03-18 8 views
13

Quando si cerca di applicare un po 'di codice che ho trovato su internet in ipython, è venuta su con un errore:cercando di scrivere un oggetto cPickle ma ottenere un tipo di attributo 'write' errore

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 

Ecco quello che ho fatto al fine:

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

Poi, ho incollato nel codice seguente:

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) 

Ecco il ar originale ticolo per dare un'idea di quello che sto cercando di realizzare:

http://billmill.org/fantasypl/

risposta

19

Il secondo argomento di cPickle.dump() deve essere un oggetto di file . Hai passato invece una stringa contenente un nome di file.

È necessario utilizzare la funzione open() per aprire un oggetto file per quel nome di file, quindi passare l'oggetto file cPickle:

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

Vedi l'Reading and Writing Files section del tutorial Python, tra cui il motivo utilizzando with quando si apre un il file è una buona idea (sarà chiuso automaticamente per te).

+0

Grazie Martijn, Ora c'è comunque un file, sto cercando di scaricare alcuni dati nel file di output, o almeno questo è quello che penso che sto cercando di fare! Questo è quello che sto cercando di replicare: http://billmill.org/fantasypl/ – Johnliquid

+0

@Johnliquid: è impossibile per me vedere dove ti manca il rientro qui; il blocco sotto l'istruzione 'with' deve essere rientrato come in una istruzione' if' o 'while' o' for'. –

+0

File "", linea 7 playerurl = "http://fantasy.premierleague.com/web/api/elements/%s/" ^ IndentationError: prevede un blocco indentato – Johnliquid

Problemi correlati