programing

파이썬에서 기본 http 파일을 다운로드하여 디스크에 저장하시겠습니까?

showcode 2023. 6. 9. 22:11
반응형

파이썬에서 기본 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

반응형