Python-FTP

FTP또는 파일 전송 프로토콜은 네트워크의 컴퓨터간에 파일을 전송하는 데 사용되는 잘 알려진 네트워크 프로토콜입니다. 클라이언트 서버 아키텍처에서 생성되며 사용자 인증과 함께 사용할 수 있습니다. 인증 없이도 사용할 수 있지만 덜 안전합니다. 현재 작업 디렉토리 및 기타 플래그를 유지하는 FTP 연결 및 각 전송에는 데이터가 전송되는 보조 연결이 필요합니다. 대부분의 일반적인 웹 브라우저는 FTP 서버에서 호스팅되는 파일을 검색 할 수 있습니다.

FTP 클래스의 메소드

파이썬에서는 모듈을 사용합니다. ftplib 파일을 전송할 때 파일을 나열하는 데 필요한 방법은 아래와 같습니다.

방법 기술
pwd () 현재 작업 디렉토리.
cwd () 현재 작업 디렉토리를 경로로 변경하십시오.
dir ([경로 [, ... [, cb]]) 경로의 디렉토리 목록을 표시합니다. retrlines ()에 전달 된 선택적 콜백 cb.
폭풍 (cmd, f) 주어진 FTP cmd (예 : STOR 파일 이름)를 사용하여 텍스트 파일을 업로드합니다.
storbinary (cmd, f [, bs = 8192]) storlines ()와 유사하지만 바이너리 파일에 사용됩니다.
삭제 (경로) 경로에있는 원격 파일을 삭제합니다.
mkd (디렉토리) 원격 디렉토리를 생성합니다.
예외 ftplib.error_temp 일시적인 오류를 나타내는 오류 코드 (400–499 범위의 응답 코드)를 수신하면 예외가 발생합니다.
예외 ftplib.error_perm 영구적 인 오류를 나타내는 오류 코드 (500–599 범위의 응답 코드)가 수신되면 예외가 발생합니다.
연결 (호스트 [, 포트 [, 시간 초과]]) 주어진 호스트 및 포트에 연결합니다. 기본 포트 번호는 FTP 프로토콜에 지정된대로 21입니다.
떠나다() 연결을 닫고 종료합니다.

아래는 위의 방법 중 일부의 예입니다.

파일 나열

아래 예제는 ftp 서버에 대한 익명 로그인을 사용하고 현재 디렉토리의 내용을 나열합니다. 파일 및 디렉토리의 이름을 통해 처리하고 목록으로 저장합니다. 그런 다음 인쇄합니다.

import ftplib
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
data = []
 
ftp.dir(data.append)
 
ftp.quit()
 
for line in data:
    print "-", line

위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.

- lrwxrwxrwx    1 0        0               1 Nov 13  2012 ftp -> .
- lrwxrwxrwx    1 0        0               3 Nov 13  2012 mirror -> pub
- drwxr-xr-x   23 0        0            4096 Nov 27  2017 pub
- drwxr-sr-x   88 0        450          4096 May 04 19:30 site
- drwxr-xr-x    9 0        0            4096 Jan 23  2014 vol

디렉토리 변경

아래 프로그램은 ftplib 모듈에서 사용 가능한 cwd 메소드를 사용하여 디렉토리를 변경 한 다음 필요한 콘텐츠를 가져옵니다.

import ftplib
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
data = []
 
ftp.cwd('/pub/')          change directory to /pub/
ftp.dir(data.append)
 
ftp.quit()
 
for line in data:
    print "-", line

위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.

- lrwxrwxrwx    1 504      450            14 Nov 02  2007 FreeBSD -> os/BSD/FreeBSD
- lrwxrwxrwx    1 504      450            20 Nov 02  2007 ImageMagick -> graphics/ImageMagick
- lrwxrwxrwx    1 504      450            13 Nov 02  2007 NetBSD -> os/BSD/NetBSD
- lrwxrwxrwx    1 504      450            14 Nov 02  2007 OpenBSD -> os/BSD/OpenBSD
- -rw-rw-r--    1 504      450           932 Jan 04  2015 README.nluug
- -rw-r--r--    1 504      450          2023 May 03  2005 WhereToFindWhat.txt
- drwxr-sr-x    2 0        450          4096 Jan 26  2008 av
- drwxrwsr-x    2 0        450          4096 Aug 12  2004 comp

파일 가져 오기

위와 같이 파일 목록을 가져온 후 다음을 사용하여 특정 파일을 가져올 수 있습니다. getfile방법. 이 방법은 파일 사본을 원격 시스템에서 ftp 연결이 시작된 로컬 시스템으로 이동합니다.

import ftplib
import sys
 
def getFile(ftp, filename):
    try:
        ftp.retrbinary("RETR " + filename ,open(filename, 'wb').write)
    except:
        print "Error"
 
 
ftp = ftplib.FTP("ftp.nluug.nl")
ftp.login("anonymous", "ftplib-example-1")
 
ftp.cwd('/pub/')          change directory to /pub/
getFile(ftp,'README.nluug')
 
ftp.quit()

위의 프로그램을 실행하면 연결이 시작된 로컬 시스템에있는 README.nlug 파일을 찾습니다.