当我尝试应用我在互联网上发现的一些代码时,它会出现错误:
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)
这是原始文章,旨在让您了解我想要实现的目标:
答案 0 :(得分:31)
cPickle.dump()
的第二个参数必须是文件对象。你传入了一个包含文件名的字符串。
您需要使用open()
函数打开该文件名的文件对象,然后将文件对象传递给cPickle
:
with open(outfile, 'wb') as pickle_file:
cPickle.dump(all, pickle_file)
请参阅Python教程的Reading and Writing Files section,包括为什么在打开文件时使用with
是一个好主意(它会自动关闭)。