Comment puis-je télécharger un fichier à l'aide de urllib.demande en Python 3?
Donc, je suis de déconner avec le urllib.request
en Python 3 et je me demande comment écrire la suite de l'obtention d'un fichier internet d'un fichier sur l'ordinateur local. J'ai essayé ceci:
g = urllib.request.urlopen('http://media-mcw.cursecdn.com/3/3f/Beta.png')
with open('test.png', 'b+w') as f:
f.write(g)
Mais j'ai eu cette erreur:
TypeError: 'HTTPResponse' does not support the buffer interface
Ce que je fais mal?
REMARQUE: j'ai vu cette question, mais c'est lié à Python 2 urllib2
qui a été remanié en Python 3.
double possible de fichier à Télécharger à partir du web en Python 3
OriginalL'auteur Nathan2055 | 2013-04-06
Vous devez vous connecter pour publier un commentaire.
changement
à
OriginalL'auteur Sheng
Un moyen plus simple je pense (d'ailleurs vous pouvez le faire en deux lignes) est à utiliser:
Comme pour la méthode que vous avez utilisée. Lorsque vous utilisez
g = urllib.request.urlopen('http://media-mcw.cursecdn.com/3/3f/Beta.png')
vous êtes juste de récupérer le fichier. Vous devez utiliserg.read()
,g.readlines()
oug.readline()
de le lire.C'est comme la lecture d'un fichier normal (sauf pour la syntaxe) et peuvent être traités dans une manière très similaire.
PEP20
aurait vous utilisezRequest
deurllib.request
, mais la vôtre aurait une ligne de moins de code. Informations sur PEP20 pour la Requête. Vous pouvez utiliseropen()
enchaîné àfile.write(url.read())
comme vous l'avez mentionné.Êtes-vous sûr? Le lien mentionné
Open the URL url, which can be either a string or a Request object.
, ici, j'ai spécifié un string donc je ne pense pas que la Demande est nécessaire dans ce cas.Qui a travaillé sur debian9 à l'aide de python3.5. Je n'utilise pas de 2,7 trop.
OriginalL'auteur Simon