>백엔드 개발 >파이썬 튜토리얼 >Python 3에서 웹에서 파일을 다운로드하는 방법은 무엇입니까?

Python 3에서 웹에서 파일을 다운로드하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 03:53:01859검색

How to Download Files from the Web in Python 3?

Python 3의 웹에서 파일 다운로드

소개

인터넷과 상호 작용하는 프로그램을 만들 때 파일을 다운로드해야 하는 경우가 많습니다. 웹 서버에서. Python 3에서는 이 작업을 수행하는 방법이 여러 가지가 있습니다.

Python 3 솔루션

처음에 제공된 코드는 함수가 URL 인수에 대해 바이트 유형을 기대하기 때문에 오류가 발생하지만 추출된 코드는 JAD 파일의 URL은 문자열입니다. URL이 문자열로 저장된 파일을 다운로드하려면 UTF-8 인코딩을 사용하여 파일을 바이트 유형으로 변환하세요.

<code class="python">import urllib.request

def downloadFile(URL=None):
    h = urllib.request.urlopen(URL.encode('utf-8'))
    return h.read()

downloadFile(URL_from_file)</code>

대체 솔루션:

여러 가지 대체 방법이 있습니다. 웹에서 파일 다운로드:

  • urllib.request.urlopen: urlopen의 응답을 읽어 웹페이지의 콘텐츠를 가져옵니다.

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
  • urllib.request.urlretrieve: 파일을 로컬로 다운로드하고 저장합니다:

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
  • urllib.request. urlopen quitil.copyfileobj: 파일 다운로드에 대해 강력히 권장되는 가장 올바른 접근 방식을 제공합니다:

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
  • urllib.request.urlopen 바이트 객체에 쓰기: 더 간단한 옵션이지만 작은 파일에만 권장됩니다.

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      data = response.read() # a `bytes` object
      out_file.write(data)</code>

압축 데이터 처리

마지막으로 압축 데이터를 즉시 추출하는 것도 가능합니다. 가능:

<code class="python">url = 'http://example.com/something.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object</code>

위 내용은 Python 3에서 웹에서 파일을 다운로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.