ftplib — FTP 프로토콜 클라이언트

ftplib — FTP 프로토콜 클라이언트

이 모듈은 FTP 클래스와 몇 가지 관련 항목을 정의합니다. FTP 클래스는 FTP 프로토콜의 클라이언트 측을 구현합니다. 이것을 사용해 다른 FTP 서버를 미러링하는 것과 같은 다양한 자동화 FTP 작업을 수행하는 Python 프로그램을 작성할 수 있습니다. 또한 urllib.request 모듈이 FTP를 사용하는 URL을 처리하는 데도 사용됩니다. FTP(파일 전송 프로토콜)에 대한 자세한 내용은 인터넷 RFC 959를 참조하세요.

출처: Python documentation

본문

기본 인코딩은 RFC 2640에 따라 UTF-8입니다. 사용 가능한 환경: WASI 아님 — WebAssembly에서는 동작하지 않거나 사용할 수 없습니다.

ftplib 모듈을 사용한 샘플 세션:

>>> from ftplib import FTP
>>> ftp = FTP('ftp.us.debian.org')  # connect to host, default port
>>> ftp.login()                     # user anonymous, passwd anonymous@
'230 Login successful.'
>>> ftp.cwd('debian')               # change into "debian" directory
'250 Directory successfully changed.'
>>> ftp.retrlines('LIST')           # list directory contents
...
'226 Directory send OK.'
>>> with open('README', 'wb') as fp:
>>>     ftp.retrbinary('RETR README', fp.write)
'226 Transfer complete.'
>>> ftp.quit()
'221 Goodbye.'

FTP 객체

class ftplib.FTP(host='', user='', passwd='', acct='', timeout=None, source_address=None, *, encoding='utf-8')FTP 클래스의 새 인스턴스를 반환합니다.

매개변수:

  • host (str) — 연결할 호스트 이름. 주어지면 생성자가 connect(host)를 암시적으로 호출합니다.
  • user (str) — 로그인할 사용자 이름(기본 'anonymous'). 주어지면 생성자가 login(host, passwd, acct)을 암시적으로 호출합니다.
  • passwd (str) — 로그인 시 사용할 비밀번호. 주어지지 않고 빈 문자열이나 "-"이면 비밀번호가 자동 생성됩니다.
  • acct (str) — ACCT FTP 명령에 사용할 계정 정보. 소수의 시스템만 구현합니다.
  • timeout (float | None) — connect() 같은 차단 연산의 타임아웃(초 단위). 기본은 전역 기본 타임아웃 설정.
  • source_address (tuple | None) — 소켓이 연결 전에 소스 주소로 바인딩할 (host, port) 2-튜플.
  • encoding (str) — 디렉터리와 파일 이름의 인코딩(기본 'utf-8').

FTP 클래스는 with 문을 지원합니다:

>>> from ftplib import FTP
>>> with FTP("ftp1.at.proftpd.org") as ftp:
...     ftp.login()
...     ftp.dir()
...

FTP 메서드

FTP 객체는 다양한 FTP 작업을 위한 메서드를 제공합니다:

  • 연결: connect(host, port=21, timeout=None, source_address=None)
  • 로그인: login(user='anonymous', passwd='', acct='')
  • 디렉터리 전환: cwd(pathname), pwd()
  • 디렉터리 내용: dir(), nlst(), retrlines(cmd, callback=None)
  • 파일 다운로드: retrbinary(cmd, callback, blocksize=8192, rest=None), retrlines()
  • 파일 업로드: storbinary(cmd, fp, blocksize=8192), storlines(cmd, fp)
  • 파일 크기/시간: size(filename), sendcmd(cmd), voidcmd(cmd)
  • 종료: quit(), close()

retrbinary('RETR README', fp.write)처럼 콜백 패턴을 사용해 바이너리 파일을 로컬 파일에 직접 쓸 수 있습니다. FTP는 프로토콜 명령을 직접 보내는 sendcmd(), voidcmd(), retrlines(), transfercmd() 등 저수준 명령도 지원합니다.

더 알아보기 (Learn more)