J'essaie de télécharger et d'ouvrir un fichier zippé et semble avoir du mal à utiliser une poignée de type de fichier avec Zipfile. J'obtiens l'erreur "AttributeError: AddInfourL Instance n'a aucun attribut" Cherche "" lors de l'exécution:
import zipfile import urllib2 def download(url,directory,name): webfile = urllib2.urlopen('http://www.sec.gov'+url) webfile2 = zipfile.ZipFile(webfile) content = zipfile.ZipFile.open(webfile2).read() localfile = open(directory+name, 'w') localfile.write(content) localfile.close() return() download(link.get("href"),'./fails_data', link.text)
5 Réponses :
Vous ne pouvez pas rechercher sur un fichier Vous devrez récupérer le fichier (éventuellement avec Alternativement, vous pouvez urllib2.urlopen code> ed fichier. Les méthodes informatiques sont répertoriées ici: http://docs.python.org/library/urllib.html# urllib.urlopen . p>
urllib.urlretrieve code>, http://docs.python.org/library/urllib.html#urllib.urlretrieve ), utilisez ensuite
zipfile code> dessus. p>
LIRE () CODE> Le fichier
urlopen code> ED, puis mettez-le dans un
stringio code>, puis utilisez
zipfile < / Code> À ce sujet, si vous souhaitez que les données zippées en mémoire. Découvrez également l'extrait
code> et
extrayant_all code> méthodes de
zipfile code> si vous souhaitez simplement extraire le fichier, au lieu d'utiliser
lire code >. p>
Mettre les choses ensemble, ce qui suit récupère le contenu du premier fichier dans un fichier zippé à partir d'un site Web:
import urllib.request import zipfile url = 'http://www.gutenberg.lib.md.us/4/8/8/2/48824/48824-8.zip' filehandle, _ = urllib.request.urlretrieve(url) zip_file_object = zipfile.ZipFile(filehandle, 'r') first_file = zip_file_object.namelist()[0] file = zip_file_object.open(first_file) content = file.read()
Pour les nouvelles versions Python, do
A partir de 2020, vous pouvez utiliser Dallo pour télécharger et décompresser un fichier, c'est-à-dire: xxx pré>
Par défaut, il extrait sur un dir sur le chemin de script avec le nom du fichier zip, mais vous pouvez spécifier l'extrait d'extrait: p>
dload.save_unzip("https://file-examples.com/wp-content/uploads/2017/02/zip_2MB.zip", "/extract/here")
Quelqu'un est-il maintenu cela que je n'ai pas vu un seul commit depuis mars?
@Ari ne semble pas comme ça, ce qui est regrettable parce que cela ressemble à un paquet vraiment cool. Je rencontre également Cette erreur lors de l'utilisation sauvegarde_unzip code>
Je n'ai pas assez de représentant pour commenter, mais en ce qui concerne la réponse de Marius ci-dessus, veuillez noter que pour Python3, il existe une légère modification nécessaire en ce qui concerne l'appel d'importation et d'urlretrerie, car Urllib a été divisé en plusieurs modules.
filehandle, _ = urllib.request.urlretrieve(url)
Itération sur @Marius Réponse (qui lit un seul fichier directement à partir du zip), si vous souhaitez extraire tous les fichiers sur un répertoire, procédez comme suit:
import urllib import zipfile url = "http://www.gutenberg.lib.md.us/4/8/8/2/48824/48824-8.zip" extract_dir = "example" zip_path, _ = urllib.request.urlretrieve(url) with zipfile.ZipFile(zip_path, "r") as f: f.extractall(extract_dir)