함께 만들고 함께 성장하기 위해 함께 노력하십시오! "너겟 데일리 뉴플랜 · 8월 업데이트 챌린지" 참여 22일차 입니다 . 이벤트 상세보기 클릭
파이썬에는 내장 ftp 클라이언트가 있지만 ftp 서버를 구현하려면 타사 라이브러리 pyftpdlib를 설치해야 합니다.
pyftpdlib
pyftpdlib는 완전한 기능을 갖춘 비동기 FTP 서비스, 오픈 소스 코드 주소를 구현합니다: github.com/giampaolo/p…
pyftpdlib 설치
많은 설치 방법이 있으며 pip가 권장됩니다.
pip는 Python용 패키지 설치 프로그램입니다. 실제로 pip는 Python Standard Library(The Python Standard Library)에 있는 패키지이지만 이 패키지는 특별하고 Python Standard Library(The Python Standard Library)에 있는 다른 패키지를 관리하는 데 사용할 수 있습니다. pip는 명령줄 프로그램입니다. pip가 설치되면 명령 프롬프트에서 실행할 수 있는 pip 명령이 시스템에 추가됩니다.
핍 설치:
-
파이썬을 설치하십시오; 이것은 반드시 설치되어야 합니다;
-
핍 다운로드:
공식 웹사이트 주소: pypi.org/project/pip… ; 다운로드 후 압축을 풉니 다.
-
명령줄 창을 열고 pip 압축 해제 후 디렉터리를 입력하고 코드를 실행합니다.
python3 setup.py install
to install, 설치 완료 후 시스템 환경 변수에 pip 추가 -
명령줄 창이 열려 있는지 확인하고 pip list 또는 pip3 list를 입력합니다.
위의 내용은 Windows 시스템에만 해당되며 다른 시스템도 참조할 수 있습니다.
-
필요한 라이브러리 설치: 명령줄 창을 열고 다음 코드를 입력하고 실행한 다음 Enter 키를 누릅니다.
핍 설치 pyftpdlib
세 번째 라이브러리가 성공적으로 설치되었다는 프롬프트를 기다립니다.
FTP 서비스 시작
pyftpdlib가 성공적으로 설치된 후 명령줄에 입력하십시오.
파이썬3 -m pyftpdlib -p 21
간단한 ftp 서비스를 시작할 수 있습니다.기본적으로 시작하기에 충분하지 않은 ftp 서비스는 암호가 없는 익명 사용자만 있습니다.사용자 및 권한을 추가하려면 코딩해야 합니다.
사용자 및 권한 인증으로 FTP 서버를 구현하는 코드
def ftpServer():
import pyftpdlib
# 该脚本程序是运行在windows上的ftp
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
#实例化虚拟用户
authorizer = DummyAuthorizer()
# 添加用户权限和路径
authorizer.add_user('user', '123456', "d:/", perm="elradfmw")
# 添加匿名用户,只需要路径
authorizer.add_anonymous("d:/")
#初始化ftp句柄
handler = FTPHandler
handler.authorizer = authorizer
#添加被动端口范围
handler.passive_ports = range(2000,20033)
# 监听ip和端口
server = FTPServer(('0.0.0.0', 21), handler)
# 开始服务
server.serve_forever()
复制代码
위의 코드를 실행하여 ftp 서비스를 시작하십시오.
FTP 클라이언트
위의 내용은 ftp 서비스를 로컬에서 시작합니다.테스트할 때 Windows 자체 ftp 클라이언트 연결 테스트를 사용할 수 있습니다.
명령줄 창을 열고 ftp 127.0.0.1 입력 사용자, 암호 테스트 결과를 입력합니다.
또한 python에는 ftp 클라이언트 라이브러리 ftplib가 내장되어 있습니다.
파이썬에서 FTP 클라이언트 사용하기
- 먼저 FTP 가져오기
ftplib에서 FTP 가져오기
- FTP 개체 인스턴스화
FTP = FTP()
- ftp에 연결하고 호스트 및 포트를 전달합니다.
ftp.connect(호스트, 포트)
- ftp에 로그인하고 로그인 방법을 사용하고 사용자 암호를 전달하십시오.
ftp.login(u,p)
- ftp에 성공적으로 로그인하고 파일을 업로드 및 다운로드하십시오.
Storbinary 방법을 사용하여 업로드:
buf_size = 1024
file_handler = open(local_file, 'rb')
ftp.storbinary('STOR %s' % remote_file, file_handler, buf_size)
file_handler.close()
复制代码
retrbinary 방법을 사용하여 다운로드
try:
buf_size = 1024
file_handler = open(local_file, 'wb')
ftp.retrbinary('RETR %s' % remote_file, file_handler.write, buf_size)
file_handler.close()
except Exception as err:
return
复制代码
FTP 작업을 수행한 후 연결을 닫아야 합니다.
ftp.quit()
复制代码
이상으로 ftp의 일상적인 동작을 실현하였으며, ftp의 기타 관련 동작은 공식 문서를 참조할 수 있습니다.