저는 Python을 처음 사용하고이 사이트에서 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
라이브러리 를 사용 하며 소스에서 파일을 직접 검색합니다.
답변
여기에 언급 한 바와 같이 :
import urllib
urllib.urlretrieve ("http://randomsite.com/file.gz", "file.gz")
답변
wget을 사용 합니다.
예를 들어 간단하고 좋은 도서관?
import wget
file_url = 'http://johndoe.com/download.zip'
file_name = wget.download(file_url)
wget 모듈은 python 2 및 python 3 버전을 지원합니다
답변
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()')
testRequest-20.236 초 안에 4469882 함수 호출 (4469842 프리미티브 호출)
testRequest2-0.072 초 안에 8580 개의 함수 호출 (8574 개의 원시 호출)
testUrllib-0.036 초 안에 3810 개의 함수 호출 (3775 개의 원시 호출)
testwget-0.020 초 안에 3489 개의 함수 호출
답변
들어 Python3 + URLopener
되지 않습니다. 그리고 사용하면 아래와 같이 오류가 발생합니다.
url_opener = urllib.URLopener () AttributeError : ‘urllib’모듈에 ‘URLopener’속성이 없습니다.
따라서 다음을 시도하십시오.
import urllib.request
urllib.request.urlretrieve(url, filename)
답변
이국적인 Windows 솔루션
import subprocess
subprocess.run("powershell Invoke-WebRequest {} -OutFile {}".format(your_url, filename), shell=True)
답변
ESXi의 wget이 SSL로 컴파일되지 않았기 때문에이 경로를 시작했으며 공급 업체의 웹 사이트에서 반대편에있는 ESXi 호스트로 OVA를 직접 다운로드하고 싶었습니다.
규칙을 수정하여 방화벽을 비활성화 (lazy) / https를 활성화해야합니다 (적절한)
파이썬 스크립트를 만들었습니다 :
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를 사용하는 것처럼 보였습니다.
