파이썬에서 기본 http 파일을 다운로드하여 디스크에 저장하시겠습니까?
저는 제 질문에 대한 답변을 위해 이 사이트의 Q&A를 거쳤습니다.하지만, 저는 초보자이고 몇 가지 해결책을 이해하기가 어렵습니다.저는 아주 기본적인 해결책이 필요합니다.
누가 'http를 통한 파일 다운로드'와 'Windows에서 디스크에 저장'에 대한 간단한 해결책을 설명해 주시겠습니까?
저도 shutil과 os 모듈을 어떻게 사용하는지 잘 모르겠습니다.
제가 다운로드하고자 하는 파일은 500MB 이하이며 .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
이것은 urllib와 python을 통해 사진을 다운로드하는 것에서 제가 가장 좋아하는 해결책 중 하나입니다.
이 예에서는 다음을 사용합니다.urllib
라이브러리를 사용하면 소스에서 파일을 직접 검색할 수 있습니다.
Python3+의 경우 URLopener
사용되지 않습니다.사용 시 다음과 같은 오류가 발생합니다.
url_message = urllib.URLopener() AttributeError: 모듈 'urllib'에 'URLopener' 특성이 없습니다.
시도해 보십시오.
import urllib.request
urllib.request.urlretrieve(url, filename)
여기에 언급된 바와 같이:
import urllib
urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")
EDIT:
그래도 요청을 사용하려면 이 질문이나 이 질문을 살펴보십시오.
wget, urllib 및 request를 사용하는 네 가지 방법.
#!/usr/bin/python
import requests
from StringIO import StringIO
from PIL import Image
import profile as profile
import urllib
import wget
url = 'https://tinypng.com/images/social/website.jpg'
def testRequest():
image_name = 'test1.jpg'
r = requests.get(url, stream=True)
with open(image_name, 'wb') as f:
for chunk in r.iter_content():
f.write(chunk)
def testRequest2():
image_name = 'test2.jpg'
r = requests.get(url)
i = Image.open(StringIO(r.content))
i.save(image_name)
def testUrllib():
image_name = 'test3.jpg'
testfile = urllib.URLopener()
testfile.retrieve(url, image_name)
def testwget():
image_name = 'test4.jpg'
wget.download(url, image_name)
if __name__ == '__main__':
profile.run('testRequest()')
profile.run('testRequest2()')
profile.run('testUrllib()')
profile.run('testwget()')
test Request - 4469882 함수 호출(4469842 원시 호출) 20.236초
testRequest2 - 0.072초 만에 8580 함수 호출(8574 기본 호출)
testUrlib - 0.036초 내에 3810개의 함수 호출(3775개의 원시 호출)
testwget - 0.020초 내에 3489개의 함수 호출
저는 wget을 사용합니다.
예를 들면 간단하고 좋은 도서관?
import wget
file_url = 'http://johndoe.com/download.zip'
file_name = wget.download(file_url)
wget 모듈은 python 2 및 python 3 버전을 지원합니다.
Exotic Windows 솔루션
import subprocess
subprocess.run("powershell Invoke-WebRequest {} -OutFile {}".format(your_url, filename), shell=True)
import urllib.request
urllib.request.urlretrieve("https://raw.githubusercontent.com/dnishimoto/python-deep-learning/master/list%20iterators%20and%20generators.ipynb", "test.ipynb")
단일 원시 쥬피터 노트북을 파일로 다운로드합니다.
텍스트 파일의 경우 다음을 사용할 수 있습니다.
import requests
url = 'https://WEBSITE.com'
req = requests.get(url)
path = "C:\\YOUR\\FILE.html"
with open(path, 'wb') as f:
f.write(req.content)
ESXi의 wget이 SSL로 컴파일되지 않고 벤더의 웹 사이트에서 직접 OVA를 지구 반대편에 있는 ESXi 호스트로 다운로드하고 싶었기 때문에 이 경로로 시작했습니다.
규칙(적절한)을 편집하여 방화벽을 비활성화/https를 활성화해야 했습니다.
Python 스크립트 생성:
import ssl
import shutil
import tempfile
import urllib.request
context = ssl._create_unverified_context()
dlurl='https://somesite/path/whatever'
with urllib.request.urlopen(durl, context=context) as response:
with open("file.ova", 'wb') as tmp_file:
shutil.copyfileobj(response, tmp_file)
ESXi 라이브러리가 쌍으로 구성되어 있지만 오픈 소스 족제비 설치 관리자가 https에 urllib를 사용하는 것 같습니다.그래서 이 길을 가도록 영감을 주었습니다.
파일을 저장하는 또 다른 깔끔한 방법은 다음과 같습니다.
import csv
import urllib
urllib.retrieve("your url goes here" , "output.csv")
언급URL : https://stackoverflow.com/questions/19602931/basic-http-file-downloading-and-saving-to-disk-in-python
'programing' 카테고리의 다른 글
Oracle이 SKIP LOCKED 상태에서 상위 N개 행을 반환하도록 강제 적용 (0) | 2023.06.09 |
---|---|
여러 열로 판다 데이터 프레임을 어떻게 필터링합니까? (0) | 2023.06.09 |
Expression Changed After It Has Be Checked Error: 식이 확인된 후 변경되었습니다.이전 값: '정의되지 않음' (0) | 2023.06.09 |
vuex의 상태를 변환하는 중 (0) | 2023.06.09 |
UITextView에서 자동 탐지된 링크의 색상을 변경할 수 있습니까? (0) | 2023.06.09 |