Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 os.open과 os.fdopen의 차이점은 무엇입니까?


파일 설명자는 OS 커널에서 직접 제공하는 파일 작업을 위한 저수준 기능입니다. 파일 디스크립터는 각 프로세스에 대해 커널이 보관하는 열린 파일 테이블에서 열린 파일을 식별하는 정수입니다. 많은 시스템 호출이 파일 설명자를 허용하지만 일반적으로 고정 너비 버퍼, 특정 조건에서 여러 번 재시도 및 수동 오류 처리가 필요하여 작업하기가 편리하지 않습니다.

파일 객체는 파일 설명자를 래핑하여 파일 작업을 보다 편리하고 오류가 덜 발생하도록 하는 Python 클래스입니다. 예를 들어 오류 처리, 버퍼링, 줄 단위 읽기를 제공하고 가비지 수집 시 닫힙니다.

  • 내장 open()은 파일 이름을 가져와서 새 Python 파일 객체를 반환합니다. 이것은 os.open()

    과 다릅니다.
  • os.open()은 파일 이름을 취하고 새 파일 설명자를 반환합니다. 이 파일 디스크립터는 os.read() 및 os.write() 또는 os.fdopen()과 같은 다른 저수준 함수에 전달할 수 있습니다.

  • os.fdopen()은 기존 파일 디스크립터를 가져와서 그 주위에 파이썬 파일 객체를 만듭니다. 파일 디스크립터를 전체 파일 객체로 변환합니다. 낮은 수준의 파일 설명자만 생성하는 API 또는 C 코드와 인터페이스할 때 유용합니다.

따라서 이 두 함수는 모두 Python에서 작업할 수 있는 시스템 기능에 더 가깝습니다.