A Upravitelj preuzimanja je u osnovi računalni program posvećen zadatku preuzimanja samostalnih datoteka s interneta. Ovdje ćemo stvoriti jednostavan Download Manager uz pomoć niti u Pythonu. Korištenjem višenitnosti datoteka se može preuzeti u obliku dijelova istovremeno iz različitih niti. Da bismo to implementirali, izradit ćemo jednostavan alat naredbenog retka koji prihvaća URL datoteke i zatim je preuzima.
Preduvjeti: Windows stroj s instaliranim Pythonom.
Postavljanje
Preuzmite dolje navedene pakete iz naredbenog retka.
1. Click paket: Click je Python paket za stvaranje prekrasnih sučelja naredbenog retka sa što manje koda koliko je potrebno. To je Command Line Interface Creation Kit.
pip instalirati klik
2. Paket zahtjeva: u ovom alatu ćemo preuzeti datoteku na temelju URL-a (HTTP adrese). Zahtjevi su HTTP biblioteka napisana u Pythonu koja vam omogućuje slanje HTTP zahtjeva. Možete dodati zaglavlja iz višedijelnih datoteka podataka i parametara s jednostavnim Python rječnicima i pristupiti podacima odgovora na isti način.
pip instalacijski zahtjevi
3. Threading paket: Za rad s nitima potreban nam je Threading paket.
pip instalacija niti
Provedba
program prostih brojeva u Javi
Bilješka:
Program je podijeljen u dijelove radi lakšeg razumijevanja. Provjerite da vam ne nedostaje nijedan dio koda tijekom pokretanja programa.
Korak 1: Uvezite potrebne pakete
Ovi paketi pružaju potrebne alate kako bi web zahtjevi mogli rukovati unosima naredbenog retka i stvarati niti.
Pythonimport click import requests import threading
Korak 2: Stvorite funkciju rukovatelja
Svaka nit će izvršiti ovu funkciju za preuzimanje svog specifičnog dijela datoteke. Ova je funkcija odgovorna za traženje samo određenog raspona bajtova i njihovo zapisivanje na ispravnu poziciju u datoteci.
Pythondef Handler(start end url filename): headers = {'Range': f'bytes={start}-{end}'} r = requests.get(url headers=headers stream=True) with open(filename 'r+b') as fp: fp.seek(start) fp.write(r.content)
Korak 3: Definirajte glavnu funkciju klikom
Pretvara funkciju u uslužni program naredbenog retka. Ovo definira kako korisnici komuniciraju sa skriptom iz naredbenog retka.
Python#Note: This code will not work on online IDE @click.command(help='Downloads the specified file with given name using multi-threading') @click.option('--number_of_threads' default=4 help='Number of threads to use') @click.option('--name' type=click.Path() help='Name to save the file as (with extension)') @click.argument('url_of_file' type=str) def download_file(url_of_file name number_of_threads):
Korak 4: Postavite naziv datoteke i odredite veličinu datoteke
Potrebna nam je veličina datoteke kako bismo podijelili preuzimanje među nitima i osigurali da poslužitelj podržava različita preuzimanja.
Python r = requests.head(url_of_file) file_name = name if name else url_of_file.split('/')[-1] try: file_size = int(r.headers['Content-Length']) except: print('Invalid URL or missing Content-Length header.') return
Korak 5: Prethodno dodijelite prostor za datoteke
Prethodno dodjeljivanje osigurava da je datoteka ispravne veličine prije nego što zapišemo dijelove u određene raspone bajtova.
Python part = file_size // number_of_threads with open(file_name 'wb') as fp: fp.write(b'