如何克服" ValueError:读取已关闭的文件"在python 3.5.1中

时间:2016-05-04 09:53:20

标签: python json python-3.x instagram-api

我有一个获取no的python脚本。的帖子,关注者和Instagram API。我第一次运行脚本时,它工作得很完美并且给了我所需的数据。 该脚本是: -

for r in range(10,12):
    var=r,sheet.cell(row=r,column=2).value
    xy=var[1]
    ij=str(xy)
    myopener=Myopen()
    url=myopener.open('https://api.instagram.com/v1/users/'+ij+'/?access_token=641567093.1fb234f.a0ffbe574e844e1c818145097050cf33')
    beta=json.loads(url)
    item=beta['data']['counts']
    data1.append(item['media'])
    data2.append(item['followed_by'])
    data3.append(item['follows'])

我已将我的FancyURLopener声明如下:=

class Myopen(FancyURLopener):
version='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'

第二次运行脚本时,它开始向我显示此错误: -

Traceback (most recent call last):
File "<pyshell#39>", line 7, in <module>
beta=json.load(url)
File "C:\Users\rnair\AppData\Local\Programs\Python\Python35\lib\site-    packages\simplejson-3.8.2-py3.5-win-amd64.egg\simplejson\__init__.py", line 455, in load
return loads(fp.read(),
File "C:\Users\rnair\AppData\Local\Programs\Python\Python35\lib\tempfile.py", line 483, in func_wrapper
return func(*args, **kwargs)
ValueError: read of closed file

如何克服这个?我已经使用相同的脚本一个星期了,它从来没有给出任何错误。为什么今天?

2 个答案:

答案 0 :(得分:0)

自己找到它!

上面收到的错误是由于: - 很少有Instagram帐户是私人的。因此,不允许对这些帐户进行API调用,并且由于JSON尝试读取它而显示值错误,并且将包含HTTP错误代码400.

为了解决这个问题,我改变了我的代码: -

for r in range(1501,1625):
var=r,sheet.cell(row=r,column=2).value
xy=var[1]
ij=str(xy)
if xy=="Account Deleted":
    data1.append('null')
    data2.append('null')
    data3.append('null')
    continue
myopener=Myopen()
url=myopener.open('https://api.instagram.com/v1/users/'+ij+'/?access_token=641567093.1fb234f.a0ffbe574e844e1c818145097050cf33')
if url.getcode() == 400:
    data1.append('Private Account')
    data2.append('Private Account')
    data3.append('Private Account')
    continue
else:
    beta=json.load(url)
    item=beta['data']['counts']
    data1.append(item['media'])
    data2.append(item['followed_by'])
    data3.append(item['follows'])

任何从上面获得帮助的人都可以随时向我询问有关相同的问题!

答案 1 :(得分:0)

我的代码中存在此问题,然后在URL地址中发现了问题。在打开响应之前,请检查您的网址。