Python的网络编程[1] -> FTP -> 使用 ftplib 建立 FTP 客户端

使用 ftplib 建立 FTP 客户端



用于建立FTP Client,与 pyftplib 建立的 Server 进行通信。

快速导航

1. 模块信息

2. 建立 FTP 客户端

1. 模块信息

1.1 常量 / Constants

FTP_PORT = 21 标准的FTP协议服务端端口

1.2 / Class

1.2.1 FTP()

ftp = FTP()

无需参数传入直接生成FTP的客户端实例

1.2.1.1 connect()方法

函数调用: ftp.connect(address)

函数功能:用于客户端连接FTP服务器

传入参数: address

address: tuple类型,包含server IP和端口,address = (ip, port)

返回参数:

1.2.1.2 set_debuglevel()方法

函数调用: ftp.set_debuglevel(level)

函数功能:用于设置调试信息输出等级,分别有0,1,2级,0级不输出调试信息

传入参数: level

level: int类型,等级数字可以为0,1,2

返回参数:

1.2.1.3 login()方法

函数调用: ftp.login(user,  password)

函数功能:用于用户登录

传入参数: user, password

user: str类型,用户名

password: str类型,密码

返回参数:

1.2.1.4 getwelcome()方法

函数调用: ftp.getwelcome()

函数功能: 用于获取服务器的欢迎信息

传入参数:

返回参数: info

info: str类型,服务端banner设置的欢迎信息

1.2.1.5 retrbinary()方法

函数调用: ftp. retrbinary (cmd, file_handler, bufsize)

函数功能:用于从服务器上下载文件

传入参数: cmd, file_handler, bufsize

cmd: str类型,’RETR ’ + file_name, file_name为要下载的目标文件名

file_handler: type类型,常为open()函数以‘wb’方式打开的一个文件后的write方法,传入后会在内部进行调用,将数据写入

bufsize: int类型,常设置1024

返回参数:

1.2.1.6 storbinary()方法

函数调用: ftp. storbinary (cmd, file_handler, bufsize)

函数功能:用于向服务器上传文件

传入参数: cmd, file_handler, bufsize

cmd: str类型,’STOR ’ + file_name, file_name为上传后保存在服务器的文件名

file_handler: type类型,常为open()函数以‘rb’方式打开的一个文件后的方法,传入后会在内部进行调用其read()函数,将数据写入cmd的文件内

bufsize: int类型,常设置1024

返回参数:

1.2.1.6 quit()方法

函数调用: ftp.quit()

函数功能:用于退出客户端连接,会想服务端发送QUIT信息

传入参数:

返回参数:

1.2.1.7 close()方法

函数调用: ftp.close()

函数功能:用于关闭客户端,不会发送信息给服务器

传入参数:

返回参数:

1.2.1.8 dir()方法

函数调用: ftp.dir()

函数功能:用于显示服务器目录下的信息,会在debug信息中显示

传入参数:

返回参数:

1.2.1.9 mkd()方法

函数调用: ftp.mkd(dir)

函数功能:用于在服务器目录下新建一个目录,make directory

传入参数: dir

dir: str类型,’.\\’ + path_name, path_name为新建的目录名

返回参数:

1.2.1.10 cwd()方法

函数调用: ftp.cwd(dir)

函数功能: 改变服务器工作目录(基于服务器设置的目录进行),change working directory

传入参数: dir

dir: str类型,’.\\’ + path_name, path_name为新建的目录名

返回参数:

1.2.1.11 pwd()方法

函数调用: ftp.pwd(dir)

函数功能: 显示当前工作目录,若在根目录则返回’/’, present working directory

传入参数:

返回参数:

1.2.1.12 rmd()方法

函数调用: ftp.rmd(dir)

函数功能: 移除指定的目录,remove directory

传入参数: dir

dir: str类型,’.\\’ + path_name, path_name为移除的目录名

返回参数:

1.2.1.13 delete()方法

函数调用: ftp.delete(file_name)

函数功能: 移除指定的文件

传入参数: file_name

file_name: str类型,为移除的文件名

返回参数:

1.2.1.14 rename()方法

函数调用: ftp.rename(from_name, to_name)

函数功能: 更改指定文件名

传入参数: from_name, to_name

from_name: str类型,为原始的文件名

to_name: str类型,为更改后的文件名

返回参数:

2 FTP的客户端建立过程

客户端建立步骤主要有:

(1)      设定IP和端口号(常用21), 用户名和密码,匿名为’’;

(2)      生成ftp实例,设置调试信息等级;

(3)      connect()函数通过IP和端口连接服务器;

(4)      login()函数进行登录

(5)      利用对应函数对服务器文件进行操作

(6)      quit()函数结束客户端。

Note: STOR和RETR时设置的bufsize为传输的速度。

 1 from ftplib import FTP
 2
 3 class FTP_Client():
 4     def __init__(self):
 5         # Info for FTP client
 6         ftp_server = ‘127.0.0.10‘
 7         ftp_port = 21
 8         # user_name = ‘Customer‘
 9         # password = ‘777777‘
10         user_name = ‘Admin‘
11         password = ‘888888‘
12         # user_name = ‘‘
13         # password = ‘‘
14
15         # Create FTP
16         self.ftp = FTP()
17         # set ftp debuglevel here, default is 0
18         self.ftp.set_debuglevel(1)
19         self.ftp.connect(ftp_server, ftp_port)
20         self.ftp.login(user_name, password)
21         print(‘<<< Welcome info:‘, self.ftp.getwelcome())
22
23     def updateFile(self):
24         bufsize = 1024
25         updateList = []
26         # Open and read client data that need to be transfer
27         file_handler = open(‘FTPClientFile\\testFileCopy.py‘, ‘rb‘)
28         # srorbinary need 3 para at least,
29         # 1st is STOR+dirName, dirName is the file name that save to server,
30         # 2nd is file_handler, open and read the client file data,
31         # 3rd is bufsize.
32         self.ftp.storbinary(‘STOR ClientTransfer.py‘, file_handler, bufsize)
33
34     def downloadFile(self):
35         bufsize = 1024
36         downList = [‘testFile.py‘, ‘testFile.docx‘, ‘testFile.zip‘, ‘testFile.txt‘]
37         # Create an new file to store data received
38         for down in downList:
39             file_handler = open(‘FTPClientFile\\copy_%s‘ % down, ‘wb‘).write
40             # retrbinary need 3 para at least,
41             # 1st is RETR+dirName, dirName is target file name,
42             # 2nd is a write function, will be called inside function, open a new file in client to store file data,
43             # 3rd is bufsize.
44             self.ftp.retrbinary(‘RETR %s‘ % down, file_handler, bufsize)
45
46     def quit(self):
47         self.ftp.quit()
48
49     # This function can get all the contains info in server path
50     def showDir(self):
51         self.ftp.dir()
52
53     # All this below function should base on the directory set in server.
54     # Make a new directory
55     def newDir(self, dir=‘.\\FTPtest‘):
56         self.ftp.mkd(dir)
57
58     # Change working directory
59     def changeDir(self, dir=‘.\\FTPtest‘):
60         self.ftp.cwd(dir)
61
62     # Return current working directory(base is ‘/‘)
63     def presentDir(self):
64         self.ftp.pwd()
65
66     # Remove certain directory
67     def removeDir(self, dir=‘.\\FTPtest‘):
68         self.ftp.rmd(dir)
69
70     # Delete file
71     def delFile(self, fileName):
72         self.ftp.delete(fileName)
73
74     # Rename file
75     def renameFile(self, currName=‘testFile.py‘, reName=‘testFileRename.txt‘):
76         self.ftp.rename(currName, reName)
77
78 ftp_client = FTP_Client()
79 ftp_client.downloadFile()
80 ftp_client.quit()

Note: 在运行客户端之前,需要先运行 ftp 服务器代码。

相关阅读



1. ftp 服务器

原文地址:https://www.cnblogs.com/stacklike/p/8119942.html

时间: 2024-08-02 17:58:09

Python的网络编程[1] -> FTP -> 使用 ftplib 建立 FTP 客户端的相关文章

python基础网络编程--转

python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网

【Python】网络编程

1.TCP编程 2.SocketServer模块 3.Twisted框架 4.UDP编程 1.TCP编程--TCP是面向连接的,其一般的设计如下: # encoding:utf-8 ''' Created on 2014-6-20 @author: Administrator ''' from socket import socket, AF_INET, SOCK_STREAM import time import threading class SockServer(object): def

TCP/IP网络编程之基于TCP的服务端/客户端(二)

回声客户端问题 上一章TCP/IP网络编程之基于TCP的服务端/客户端(一)中,我们解释了回声客户端所存在的问题,那么单单是客户端的问题,服务端没有任何问题?是的,服务端没有问题,现在先让我们回顾下服务端的I/O代码 echo_server.c --while ((str_len = read(clnt_sock, messag, 1024)) != 0) write(clnt_sock, messag, str_len);-- 接着,我们回顾客户端的代码 echo_client.c -- wr

Python 之 网络编程——SOCKET开发

一.预备知识 对于我们,主要掌握5层协议就行. 物理层: 转成二进制数序列数据链路层: 形成统一的协议:Internet协议 包括数据头(18个字节,前6个字节原地址,中间6个字节为目标地址,后6个字节为数据的描述)和数据网络层: 有IP协议,包括IP头和数据传输层: 包括tcp.UDP两个协议:基于端口(0-65535)的协议应用层: 包括http.ftp协议 TCP协议:流式协议,先把管道修好 客户端   服务端 C-------------------------------->S   <

Python学习---网络编程 1217[all]

OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:IP,ICMP,OSPF,EIGRP,IGMP 数据链路层:SLIP,CSLIP,PPP,MTU [图片来自网络] 网络通信要素: A:IP地址    (1) 用来标识网络上一台独立的主机 (2) IP地址 = 网络地址 + 主机地址(网络号:用于识别主机所在的网络/网段.主机号:用于识别该网络中的主

python ==》 网络编程

 一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层模型 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 学习socket一定要先学习互联网协议: 1.首先:本节课程的目标就是教会你如何基于socket编程,来开发一款自己的C/S架构软件 2.其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的 3.然后:网络的核心

python之网络编程

14.1.1 socket模块 在网络编程中德一个基本组件就是套接字.套接字主要是两个程序之间的信息通道. 套接字包括两个:服务器套接字和客户机套接字.创建一个服务器套接字后,让它等待连接.这样它就在某个网络地址处监听. 一个套接字就是一个socket模块中socket类的实例.它的实例化需要3个参数:第一个参数是地址族(默认是socket.AF_INET);第2个参数是流(socket.SOCK_STREAM,默认值)或数据报(socket.SOCK_DGRAM)套接字.第三个参数是使用的协议

Python Socket 网络编程

Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ 聊天.收发 email 等等.要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在 TCP/IP 网络协议中,就是通过 (IP地址,协议,端口号) 三元组来标识进程的,解决了进程标识问题,就有了通信的基础了. 本文主要介绍使用 Python 进行 TCP Socket 网络编程,假设你已

python学习 网络编程--socket

网络通信标准---网络协议互联网协议--osi七层协议五层协议:应用层:应用层.表示层.会话层          传输层:传输层    网络层:网络层    数据链路层:数据链路层    物理层:物理层物理层就是用来发送电信号的数据链路层跑协议,分组标准. ethernet以太网协议,规定电信号如何分组电信号拿来后是一堆数据,只要规定了怎么分组才能拿到正确数据ethernet规定一组电信号构成一个数据报,叫做帧每一数据帧分成:报头head和数据data两部分但凡接入互联网必须要有网卡每个网卡出厂