netrc — netrc 파일 처리

netrc — netrc 파일 처리

netrc 클래스는 Unix ftp 프로그램과 다른 FTP 클라이언트가 사용하는 netrc 파일 형식을 파싱하고 캡슐화해요. 로그인 정보를 기계적으로 관리하는 netrc 파일을 파이썬에서 쉽게 읽고 활용할 수 있게 해줘요.

출처: Python documentation

본문

  • class netrc.netrc([file])netrc 인스턴스(또는 하위 클래스 인스턴스)는 netrc 파일의 데이터를 캡슐화해요. 초기화 인자를 주면 해당 파일을 파싱해요. 인자가 없으면 os.path.expanduser() 로 결정된 사용자 홈 디렉터리의 .netrc 파일을 읽어요. 그 파일이 없으면 FileNotFoundError 가 발생해요. 파싱 오류는 파일 이름, 줄 번호, 종료 토큰을 포함한 진단 정보와 함께 NetrcParseError 로 발생해요.

POSIX 시스템에서 인자를 지정하지 않으면, .netrc 파일의 소유권이나 권한이 불안전할 때(실행 중인 프로세스 사용자 외의 사용자가 소유했거나 다른 사용자가 읽기·쓰기 가능한 경우) 비밀번호 존재 여부에 따라 NetrcParseError 가 발생해요. 이는 ftp 및 .netrc 를 사용하는 다른 프로그램과 동등한 보안 동작을 구현한 거예요. os.getuid() 를 지원하지 않는 플랫폼에서는 이런 보안 검사가 제공되지 않아요.

  • 버전 3.4에서 POSIX 권한 검사가 추가됐어요.

  • 버전 3.7에서 file 인자를 넘기지 않을 때 .netrc 파일 위치를 찾는 데 os.path.expanduser() 를 사용하게 됐어요.

  • 버전 3.10에서 netrc 는 로케일 특정 인코딩보다 UTF-8 인코딩을 먼저 시도해요. netrc 파일의 항목이 더 이상 모든 토큰을 포함할 필요가 없으며, 누락된 토큰 값은 빈 문자열로 기본값이 정해져요. 모든 토큰과 값은 이제 공백·비ASCII 문자 같은 임의의 문자를 포함할 수 있어요. 로그인 이름이 anonymous 면 보안 검사가 실행되지 않아요.

  • exception netrc.NetrcParseErrornetrc 클래스가 원문 텍스트에서 구문 오류를 만났을 때 발생시키는 예외예요. 인스턴스는 세 가지 유용한 속성을 제공해요.

    • msg — 오류에 대한 텍스트 설명.
    • filename — 원본 파일 이름.
    • lineno — 오류가 발견된 줄 번호.

netrc 객체 (netrc Objects)

netrc 인스턴스는 다음 메서드를 가져요.

  • netrc.authenticators(host)host 에 대한 인증 정보 (login, account, password) 3-튜플을 반환해요. netrc 파일에 해당 호스트 항목이 없으면 'default' 항목과 연결된 튜플을 반환해요. 일치하는 호스트도 default 항목도 없으면 None 을 반환해요.
  • netrc.repr() — 클래스 데이터를 netrc 파일 형식의 문자열로 덤프해요. (이 과정에서 주석은 버려지고 항목 순서가 바뀔 수 있어요.)

netrc 인스턴스는 공개 인스턴스 변수를 가져요.

  • netrc.hosts — 호스트 이름을 (login, account, password) 튜플에 매핑하는 딕셔너리예요. 'default' 항목이 있으면 그 이름의 가상 호스트로 표현돼요.
  • netrc.macros — 매크로 이름을 문자열 목록에 매핑하는 딕셔너리예요.

더 알아보기 (Learn more)