227 votes

AttributeError("'str' object has no attribute 'read'")

En Python, je reçois une erreur :

Exception:  (<type 'exceptions.AttributeError'>,
AttributeError("'str' object has no attribute 'read'",), <traceback object at 0x1543ab8>)

Donné le code python :

def getEntries (self, sub):
    url = 'http://www.reddit.com/'
    if (sub != ''):
        url += 'r/' + sub
    
    request = urllib2.Request (url + 
        '.json', None, {'User-Agent' : 'Reddit desktop client by /user/RobinJ1995/'})
    response = urllib2.urlopen (request)
    jsonStr = response.read()
    
    return json.load(jsonStr)['data']['children']

Que signifie cette erreur et qu'ai-je fait pour la provoquer ?

282voto

kosii Points 1342

Le problème est que pour json.load vous devez passer un fichier comme objet avec une fonction read définie. Soit vous utilisez json.load(response) ou json.loads(response.read()).

41voto

music_piano Points 328

Vous devez d'abord ouvrir le fichier. Cela ne fonctionne pas :

json_file = json.load('test.json')

Mais cela fonctionne :

f = open('test.json')
json_file = json.load(f)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X