전체 FTP 디렉토리를 다운로드하는 Python 메소드

高洛峰
풀어 주다: 2017-02-21 10:27:07
원래의
2358명이 탐색했습니다.

이 글은 주로 ftp 디렉토리 전체를 파이썬으로 다운로드하는 방법을 소개하고 있으며, 필요한 모든 사람들이 함께 배울 수 있는 참고할만한 가치가 있다고 생각합니다.

머리말

최근 업무상의 필요로 인해 이 스크립트를 작성했습니다. 스크립트로 완료한 작업은 FTP에서 디렉토리를 다운로드하는 것입니다. 여러 파일을 다운로드하려면 get 명령을 사용할 수 있지만, 경쟁해야 한다면 lftp를 사용하라고 했습니다. , 그런 다음 미러 명령을 사용하십시오. 각 회사마다 고유한 시나리오가 있으므로 이에 대해 심각하게 생각하지 않습니다. 우리 FTP는 모두 SSL을 사용하므로 lftp를 사용할 수 없습니다. 스크립트는 FTP 연결을 설정한 다음 로그인하여 파일 목록을 가져오고 반환된 목록을 기반으로 for 루프를 수행하고 하나씩 다운로드하는 것입니다.

스크립트는 다음과 같습니다.

#!/usr/bin/evn python
 
from ftplib import FTP_TLS, FTP
import socket
import ssl
import os
import sys
 
class IMPLICIT_FTP_TLS(FTP_TLS):
 #构造函数初始化父类
 def __init__(self, host='', user='', passwd='', acct='', keyfile=None,
  certfile=None, timeout=60):
  FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout)
 #建立服务器的FTPS连接
 def connect(self, host='', port=0, timeout=-999):
  if host != '':
   self.host = host
  if port > 0:
   self.port = port
  if timeout != -999:
   self.timeout = timeout
  try:
   #创建socket
   self.sock = socket.create_connection((self.host, self.port), self.timeout)
   self.af = self.sock.family
   #wrap_socket接收一个socket实例,返回SSLSocket实例,可以理解在普通socket上封装了一层ssl
   self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile)
   self.file = self.sock.makefile('rb')
   self.welcome = self.getresp()
  except Exception as e:
   print (e)
  return self.welcome
 
 
def get_ftp_ver(version):
 #如果没有这个目录就新建
 if not os.path.isdir(version):
  os.makedirs(version)
 ftps = IMPLICIT_FTP_TLS()
 ftps.connect(host='10.0.0.8', port=666)
 ftps.login(user="ftp_user", passwd="ftp_password")
 #建立安全的数据连接,之后才能返回数据。
 ftps.prot_p()
 ftps.cwd(version)
 files = ftps.nlst()
 #进入本地目录
 os.chdir(version)
 #循环下载每个文件
 for file in files:
  fp = open(file, 'wb')
  ftps.retrbinary('RETR %s' % file, fp.write)
 ftps.close()
 
if __name__ == '__main__':
 get_ftp_ver(sys.argv[1])
로그인 후 복사

사용되는 스크립트는

#python get_data.py version_20160920
로그인 후 복사

다음 매개변수는 기본적으로 R&D에서 업데이트할 수 있도록 제공하는 파일 이름입니다. 그러면 실행하면 전체 디렉터리에 있는 파일을 다운로드할 수 있습니다. 스크립트의 다른 내용은 댓글을 보면 알 수 있습니다.

전체 ftp 디렉토리 및 관련 기사를 다운로드하는 더 많은 Python 방법을 보려면 PHP 중국어 웹사이트에 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿