[파이썬] os `os.sendfile()`로 파일 전송

파일 전송은 소프트웨어 개발에서 자주 사용되는 일반적인 작업입니다. Python에서도 파일 전송을 쉽게 수행할 수 있는 다양한 방법이 제공됩니다. 그 중에서도 os.sendfile() 함수는 효율적인 파일 전송을 위한 강력한 도구입니다.

os.sendfile() 함수란?

os.sendfile() 함수는 운영체제 수준에서 파일을 전송하기 위해 사용됩니다. 이 함수는 C 라이브러리의 sendfile() 함수를 Python으로 래핑한 것입니다. 이를 통해 Python에서 빠르고 효율적인 파일 전송이 가능해집니다.

os.sendfile()의 사용법

os.sendfile() 함수는 다음과 같은 형식을 가집니다:

os.sendfile(out_fd, in_fd, offset, count)

파일 전송 예제

이제 실제로 os.sendfile() 함수를 사용하여 파일을 전송하는 예제를 살펴보겠습니다. 다음은 input_file.txt에서 output_file.txt로 파일을 전송하는 예제 코드입니다:

import os

def send_file():
    input_file = open('input_file.txt', 'rb')
    output_file = open('output_file.txt', 'wb')
    
    input_fd = input_file.fileno()
    output_fd = output_file.fileno()
    
    # 전송할 파일 크기 계산
    file_size = os.path.getsize('input_file.txt')
    
    # 파일 전송
    sent_bytes = os.sendfile(output_fd, input_fd, 0, file_size)
    
    print(f"전송 완료! 총 {sent_bytes}바이트 전송되었습니다.")
    
    input_file.close()
    output_file.close()

send_file()

위 예제에서는 open() 함수를 사용하여 입력 파일(input_file.txt)과 출력 파일(output_file.txt)을 엽니다. 그런 다음, 각 파일의 파일 디스크립터를 가져옵니다(fileno() 메서드 사용). 이후, 입력 파일의 크기를 확인하고 os.sendfile() 함수를 호출하여 파일을 전송합니다. 전송된 바이트 수를 출력한 후, 파일을 닫습니다.

os.sendfile() 함수를 사용하면 운영체제의 기능을 활용하여 파일을 빠르고 효율적으로 전송할 수 있습니다. 따라서 대용량 파일의 전송이 필요한 경우에 특히 유용합니다.

이제 os.sendfile() 함수를 활용하여 파일 전송을 쉽고 효율적으로 수행할 수 있습니다. 여러분의 파일 전송 작업에 이를 활용해보세요!