2017-04-02 9 views
0

Ich versuche, Kaggle-Dataset von Python-Skript (Python 3.5) herunterladen und entpacken, aber ich bekomme einen Fehler.BadZipFile beim Herunterladen von Kaggle

Nach dem Ausführen dieses Codes, erhalte ich den folgenden Fehler.

BadZipFile: Die Datei ist nicht eine Zip-Datei

Wie kann ich diesen Fehler loszuwerden? Was ist die Ursache?

+0

Dieser Link nicht öffentlich zugänglich ist. Wo sind die Zugriffsrechte im Programm? Ist das das komplette Programm? – kmario23

+0

So etwas sollte funktionieren: http://ramhiser.com/2012/11/23/how-to-download-kaggle-data-with-python-and-requests-dot-py/ – kmario23

+0

kmario23 ist richtig, sollten Sie Melden Sie sich vor dem Herunterladen der Datei mit Python-Code an der Site an. Andernfalls ist die Anfrage an die URL keine ZIP-Datei. –

Antwort

0

Mit Anfragen Modul und einige kleinere Updates http://ramhiser.com/2012/11/23/how-to-download-kaggle-data-with-python-and-requests-dot-py/ die Lösung ist:

import io 
from zipfile import ZipFile 
import csv 
import requests 

# The direct link to the Kaggle data set 
data_url = 'https://www.kaggle.com/c/quora-question-pairs/download/test.csv.zip' 

# The local path where the data set is saved. 
local_filename = "test.csv.zip" 

# Kaggle Username and Password 
kaggle_info = {'UserName': "my_username", 'Password': "my_password"} 

# Attempts to download the CSV file. Gets rejected because we are not logged in. 
r = requests.get(data_url) 

# Login to Kaggle and retrieve the data. 
r = requests.post(r.url, data = kaggle_info) 

# Writes the data to a local file one chunk at a time. 
f = open(local_filename, 'wb') 
for chunk in r.iter_content(chunk_size = 512 * 1024): # Reads 512KB at a time into memory 
    if chunk: # filter out keep-alive new chunks 
     f.write(chunk) 
f.close() 

c = ZipFile(local_filename) 
Verwandte Themen