본문으로 바로가기

파이썬 FTP 정리 파일업로드 파일다운로드

category python 2021. 12. 27. 23:24
반응형

간혹가다가 FTP에 업로드 및 다운로드를 해야 하는 경우가 있다.

파이썬으로 FTP 를 사용해보자.

아래는 FTP를 이용한 예제 목차이다.

  • 파일다운로드
  • 파일업로드
  • 다건 파일다운로드
  • 다건 파일업로드
  • 파일이름변경
  • 서버에 폴더 생성
  • 서버 폴더 삭제
  • 현재 폴더 리스트 출력

  • FTP 메서드 정리

ftp = ftplib.FTP() : FTP 새 인스턴스를 생성한다.

ftp.connect(host,port) : host,port로 ftp 연결한다. 기본포트는 21

ftp.login(user,passwd) : user,passwd로 로그인 한다.

ftp.retrbinary(cmd, file): 파일을 바이너리로 다운로드 한다.

    [cmd] 'RETR filename' 로 RETR은 정적이며 filename은 ftp에 있는 파일명이다.

    [file] 다운로드할 파일

ftp.storbinary(cmd,file) : 파일을 바이너리로 업로드 한다.

    [cmd] 'STOR filename' 로 STOR은 정적이며 filename은 ftp에 있는 파일명이다.

    [file] 업로드할 파일

ftp.nlst() : 현재 폴더의 파일 리스트를 반환한다.

ftp.dir() : 현재 폴더 디렉토리 목록을 표준 출력 반환한다.

ftp.rename(fromname,toname) : fromname 파일을 toname으로 변경한다.

ftp.delete(filename) : 서버의 파일을 삭제한다.

ftp.cwd(pathname): 서버의 현재 폴더로 이동

ftp.mkd(pathname): 서버의 새 폴더생성

ftp.rmd(dirname) : 서버의 폴더 삭제


  • 공통 import

아래 코드를 돌릴시 ftplib, os 를 import 한다.

1
2
import ftplib
import os
cs

 

  • 파일 다운로드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 파일 다운로드
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024')  # 현재 폴더 이동
 
    # 파일다운로드
    with open(file=r'c:\chosun.png', mode='wb'as rf:
      ftp.retrbinary('RETR chosun.png', rf.write)
except Exception as e:
  print(e)
cs

 

  • 다건 파일다운로드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
# ###############
# # 다건 파일 다운로드
# ###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024')  # 현재 폴더 이동
 
    # 파일다운로드
    list = ftp.nlst()
    print(list)
 
    for file in list :
      with open(file=r'c:\tmp\{}'.format(file), mode='wb'as rf:
        ftp.retrbinary('RETR {}'.format(file), rf.write)
 
except Exception as e:
  print(e)
cs

 

  • 파일업로드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 파일 업로드
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024')  # 현재 폴더 이동
 
    # 파일업로드
    with open(file=uploadFile, mode='rb'as wf:
      ftp.storbinary('STOR 3.ttf', wf)
 
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 다건 파일 업로드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
##############
# 다건 파일 업로드
##############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024')  # 현재 폴더 이동
 
    # 파일다운로드
    list = os.listdir(r'c:\tmp')
    print(list)
 
    for file in list :
      with open(file=r'c:\tmp\{}'.format(file), mode='rb'as f:
        ftp.storbinary('STOR {}'.format(file), f)
 
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 파일 이름변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 파일 이름변경
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024'# 현재 폴더 이동
 
    # 파일 이름변경
    print(ftp.dir())
    ftp.rename('4.ttf','3.ttf')
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 파일 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 파일 삭제
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024'# 현재 폴더 이동
 
    # 파일 이름변경
    print(ftp.dir())
    ftp.delete('agentlog.txt')
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 서버 폴더 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 서버 폴더 생성
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024'# 현재 폴더 이동
 
    # 서버 폴더 생성
    print(ftp.dir())
    ftp.mkd('test')
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 서버 폴더 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
###############
# 서버 폴더 삭제
###############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024'# 현재 폴더 이동
 
    # 서버 폴더 삭제
    print(ftp.dir())
    ftp.rmd('test')
    print(ftp.dir())
 
except Exception as e:
  print(e)
cs

 

  • 현재 폴더 리스트 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ftp 정보
host = '111.111.111.11'
user = 'root'
passwd = '1111111'
 
# 파일정보
uploadFile = r'c:\3.ttf'
 
##############
# 현재 폴더 리스트 출력
##############
try:
  # ftp 연결
  with ftplib.FTP() as ftp:
    ftp.connect(host=host,port=21)
    ftp.encoding = 'utf-8'
    ftp.encoding = 'utf-8'
    s = ftp.login(user=user,passwd=passwd)
 
    ftp.cwd('/home/f10024'# 현재 폴더 이동
 
    # 현재 폴더 리스트 출력
    print(ftp.nlst())
 
except Exception as e:
  print(e)
cs
반응형