python 다운로드 파일 의 다양한 방법 집합
Requests
Requests 모듈 의 get 방법 을 사용 하여 url 에서 파일 을 다운로드 합 니 다.python 파충류 에 서 는 간단 한 웹 페이지 내용 을 다운로드 하 는 데 자주 사용 합 니 다.
import requests
# bing.com
url = 'https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg'
def requests_download():
content = requests.get(url).content
with open('pic_requests.jpg', 'wb') as file:
file.write(content)
urllibpython 에 내 장 된 urllib 모듈 의 url retrieve 방법 을 사용 하여 url 요청 을 파일 로 직접 저장 합 니 다.
from urllib import request
# bing.com
url = 'https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg'
def urllib_download():
request.urlretrieve(url, 'pic_urllib.jpg')
urllib3urllib 3 는 Http 클 라 이언 트 에 사용 되 는 Python 모듈 로 연결 탱크 를 사용 하여 네트워크 에 접근 을 요청 합 니 다.
def urllib3_download():
#
poolManager = urllib3.PoolManager()
resp = poolManager.request('GET', url)
with open("pic_urllib3.jpg", "wb") as file:
file.write(resp.data)
resp.release_conn()
wgetLinux 시스템 에 wget 명령 이 있어 인터넷 의 자원 을 편리 하 게 다운로드 할 수 있 고 Python 에 도 해당 하 는 wget 모듈 이 있 습 니 다.pip install 명령 으로 설치
import wget
# bing.com
url = 'https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg'
def wget_download():
wget.download(url, out='pic_wget.jpg')
명령 행 에서 wget 명령 을 직접 사용 할 수도 있 습 니 다.
python -m wget https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg
블록 으로 나 누 어 큰 파일 을 다운로드 하 다.다운로드 해 야 할 파일 이 매우 크 고 컴퓨터 의 메모리 공간 이 전혀 부족 한 경우 requests 모듈 의 스 트림 모드 를 사용 할 수 있 습 니 다.기본 적 인 상황 에서 stream 인 자 는 False 이 고 파일 이 너무 많 으 면 메모리 가 부족 합 니 다.stream 매개 변수 가 True 일 때 requests 는 바로 다운로드 하지 않 고 iter 를 호출 합 니 다.content 혹은 iterlines 내용 옮 겨 다 닐 때 다운로드
iter_content:다운로드 할 내용 을 하나하나 옮 겨 다 니 며 iterlines:다운로드 할 내용 을 한 줄 한 줄 옮 겨 다 니 기
import requests
def steam_download():
# vscode
url = 'https://vscode.cdn.azure.cn/stable/e5a624b788d92b8d34d1392e4c4d9789406efe8f/VSCodeUserSetup-x64-1.51.1.exe'
with requests.get(url, stream=True) as r:
with open('vscode.exe', 'wb') as flie:
# chunk_size 1024 * 1024 bytes
for chunk in r.iter_content(chunk_size=1024*1024):
if chunk:
flie.write(chunk)
진도 표큰 파일 을 다운로드 할 때 진도 바 를 추가 하여 다운로드 인터페이스 를 미화 하면 다운로드 한 네트워크 속도 와 다운로드 한 파일 크기 를 실시 간 으로 알 수 있 습 니 다.여 기 는 tqdm 모듈 을 진도 바 로 표시 하고 pip install tqdm 로 설치 할 수 있 습 니 다.
from tqdm import tqdm
def tqdm_download():
url = 'https://vscode.cdn.azure.cn/stable/e5a624b788d92b8d34d1392e4c4d9789406efe8f/VSCodeUserSetup-x64-1.51.1.exe'
resp = requests.get(url, stream=True)
#
file_size = int(resp.headers['content-length'])
with tqdm(total=file_size, unit='B', unit_scale=True, unit_divisor=1024, ascii=True, desc='vscode.exe') as bar:
with requests.get(url, stream=True) as r:
with open('vscode.exe', 'wb') as fp:
for chunk in r.iter_content(chunk_size=512):
if chunk:
fp.write(chunk)
bar.update(len(chunk))
tqdm 매개 변수 설명:total:bytes,전체 파일 의 크기
정지점 전송
HTTP/1.1 프로 토 콜 요청 헤더 에 Range 라 는 필드 필드 를 추 가 했 습 니 다.Range 필드 필드 필드 는 파일 을 다운로드 한 내용 부터 계속 다운로드 하도록 합 니 다.
사이트 가 Range 필드 필드 에서 응답 을 요청 하 는 상태 코드 를 206(Partial Content)으로 지원 하지 않 으 면 416(required Range not satisfiable)입 니 다.
Range 형식
Range:[unit=first byte pos] - [last byte pos], Range = - , :bytes
Range 를 headers 에 추가 하기
from tqdm import tqdm
def duan_download():
url = 'https://vscode.cdn.azure.cn/stable/e5a624b788d92b8d34d1392e4c4d9789406efe8f/VSCodeUserSetup-x64-1.51.1.exe'
r = requests.get(url, stream=True)
#
file_size = int(r.headers['content-length'])
file_name = 'vscode.exe'
# , 0 ,
first_byte = 0
if os.path.exists(file_name):
first_byte = os.path.getsize(file_name)
#
if first_byte >= file_size:
return
# Range
header = {"Range": f"bytes={first_byte}-{file_size}"}
# initial
with tqdm(total=file_size, unit='B', initial=first_byte, unit_scale=True, unit_divisor=1024, ascii=True, desc=file_name) as bar:
# headers
with requests.get(url, headers = header, stream=True) as r:
with open(file_name, 'ab') as fp:
for chunk in r.iter_content(chunk_size=512):
if chunk:
fp.write(chunk)
bar.update(len(chunk))
예시 결과다운 로드 를 시작 한 후 스 크 립 트 를 닫 고 다시 실행 합 니 다.파일 은 끊 긴 내용 을 계속 다운로드 합 니 다.
총결산
본 고 는 자주 사용 하 는 7 중 파일 다운로드 방식 을 소개 하 였 으 며,다른 다운로드 방식 은 여러분 이 댓 글 에서 교류 하고 교류 하 며 공동으로 발전 할 수 있 습 니 다.
예시 코드:Python 에서 파일 을 다운로드 하 는 여러 가지 방법
이상 은 python 에서 파일 을 다운로드 하 는 여러 가지 방법 을 모 은 상세 한 내용 입 니 다.python 에서 파일 을 다운로드 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.