[python] Requests 라이브러리를 이용해 파일 다운로드 진행 상태를 표시하는 방법은?

Requests 라이브러리를 사용하여 파일을 다운로드하는 동안 진행 상태를 표시하는 방법을 알아보겠습니다. 이는 파일 크기와 현재 다운로드된 바이트 수를 사용하여 진행바를 표시하는 방식입니다.

먼저, requests 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다:

pip install requests

이제 다운로드하는 파일을 URL로 지정하고, requests 라이브러리의 get() 메서드를 사용하여 파일을 다운로드합니다. 진행 상태를 표시하기 위해 stream 매개변수를 True로 설정합니다.

import requests

url = 'http://example.com/file.zip'
response = requests.get(url, stream=True)

total_size = int(response.headers.get('Content-Length', 0))
block_size = 1024  # 1KB

with open('file.zip', 'wb') as file:
    for data in response.iter_content(block_size):
        file.write(data)
        downloaded_size = file.tell()
        progress = int((downloaded_size / total_size) * 100)
        print(f'Downloading: {progress}% ({downloaded_size}/{total_size} bytes)', end='\r')

위 코드에서는 파일을 1KB 블록으로 나누어 다운로드하고, 파일에 기록한 다음 현재 다운로드된 크기와 전체 크기를 사용하여 진행 상태를 계산하고 출력합니다. end='\r' 매개변수를 사용하여 출력을 한 줄로 유지합니다.

이제 파일을 다운로드하면서 진행 상태가 표시됩니다. 다운로드가 완료되면 100%를 표시하게 됩니다.

이 글은 예시일 뿐, 실제 다운로드할 파일의 URL을 사용하여 테스트해야 합니다. 정보를 받을 때까지는 출력이 업데이트되지 않을 수 있습니다. 따라서 네트워크 속도와 파일 크기에 따라 출력이 지연될 수 있습니다.

자세한 내용은 Requests 라이브러리 공식 문서를 참조하십시오.