【问题标题】:how to overcome "ValueError: read of closed file" in python 3.5.1如何克服 python 3.5.1 中的“ValueError: read of closed file”
【发布时间】:2016-05-04 09:53:20
【问题描述】:

我有一个获取编号的 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

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

【问题讨论】:

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


    【解决方案1】:

    自己发现的!

    上面收到的错误是由于:- 很少有 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'])
    

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

    【讨论】:

      【解决方案2】:

      我的代码中有这个问题,然后在 url 地址中发现了一个问题。请在打开回复之前检查您的网址。

      【讨论】:

        猜你喜欢
        • 2021-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-01
        • 2022-11-25
        • 2018-02-21
        • 2015-11-27
        • 1970-01-01
        相关资源
        最近更新 更多