Βασική λήψη αρχείων http και αποθήκευση στο δίσκο σε python;

Είμαι νέος στην Python και έχω διαβάσει τα Q&A σε αυτόν τον ιστότοπο, για μια απάντηση στην ερώτησή μου. Ωστόσο, είμαι αρχάριος και δυσκολεύομαι να κατανοήσω κάποιες από τις λύσεις. Χρειάζομαι μια πολύ βασική λύση.

Θα μπορούσε κάποιος να μου εξηγήσει μια απλή λύση για την 'Λήψη ενός αρχείου μέσω http' και 'Αποθήκευση στο δίσκο, στα Windows', σε μένα;

Επίσης, δεν είμαι σίγουρος πώς να χρησιμοποιώ το shutil και τα os modules.

Το αρχείο που θέλω να κατεβάσω είναι κάτω από 500 MB και είναι ένα αρχείο αρχείου .gz. Αν κάποιος μπορεί να εξηγήσει πώς να εξάγουμε το αρχείο και να χρησιμοποιήσουμε τα αρχεία σε αυτό επίσης, αυτό θα ήταν υπέροχο!

Εδώ'είναι μια μερική λύση, που έγραψα από διάφορες απαντήσεις σε συνδυασμό:

import requests
import os
import shutil

global dump

def download_file():
    global dump
    url = "http://randomsite.com/file.gz"
    file = requests.get(url, stream=True)
    dump = file.raw

def save_file():
    global dump
    location = os.path.abspath("D:\folder\file.gz")
    with open("file.gz", 'wb') as location:
        shutil.copyfileobj(dump, location)
    del dump

Θα μπορούσε κάποιος να επισημάνει τα λάθη (επίπεδο αρχάριου) και να εξηγήσει τυχόν ευκολότερες μεθόδους για να γίνει αυτό;

Ευχαριστώ!

Λύση

Ένας καθαρός τρόπος για να κατεβάσετε ένα αρχείο είναι:

import urllib

testfile = urllib.URLopener()
testfile.retrieve("http://randomsite.com/file.gz", "file.gz")

Αυτό κατεβάζει ένα αρχείο από έναν ιστότοπο και το ονομάζει file.gz. Αυτή είναι μια από τις αγαπημένες μου λύσεις, από το https://stackoverflow.com/questions/3042757/downloading-a-picture-via-urllib-and-python.

Αυτό το παράδειγμα χρησιμοποιεί τη βιβλιοθήκη urllib, και θα ανακτήσει απευθείας το αρχείο από μια πηγή.

Σχόλια (8)

Όπως αναφέρεται εδώ:

import urllib
urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")

EDIT: Αν εξακολουθείτε να θέλετε να χρησιμοποιείτε αιτήσεις, ρίξτε μια ματιά σε αυτή την ερώτηση ή αυτή εδώ.

Σχόλια (6)

Χρησιμοποιώ το wget.

Απλή και καλή βιβλιοθήκη αν θέλετε να παράδειγμα?

import wget

file_url = 'http://johndoe.com/download.zip'

file_name = wget.download(file_url)

Η ενότητα wget υποστηρίζει τις εκδόσεις python 2 και python 3.

Σχόλια (0)