[Python进阶] 操作Ftp:ftplib

2024-01-02 09:42:12

6.23 操作Ftp:ftplib

6.23.1 ftplib简介

ftplib是Python的标准库之一,用于FTP(文件传输协议)的客户端操作。FTP是一种用于在网络上传输文件的标准网络协议。ftplib模块提供了一个高级的API,使得使用FTP协议变得相对简单。
以下是ftplib模块中的一些主要功能:
连接到FTP服务器:使用ftplib.FTP()函数可以创建一个FTP对象,然后使用该对象的connect()方法连接到FTP服务器。
登录到FTP服务器:使用login()方法提供用户名、密码和可选的远程服务器名称,登录到FTP服务器。
列出FTP服务器上的文件和目录:使用dir()或cwd()方法可以列出FTP服务器上的文件和目录。
下载文件:使用retrieve()或retrbinary()方法可以下载FTP服务器上的文件。
上传文件:使用store()或storbinary()方法可以上传文件到FTP服务器。
改变工作目录:使用cwd()方法可以改变当前的工作目录。
退出FTP服务器:使用quit()方法可以退出FTP会话。

6.23.2 连接、登录和退出FTP服务器

from icecream import ic
from ftplib import FTP

ftp = FTP()  # 设置ftp对象
ftp.set_debuglevel(2)  # 打开调试级别2,显示详细信息
ftp.connect("192.168.100.202", 21)  # 连接ftp服务器
ftp.login("share", "1")  # 登录ftp服务器,需要用户名,密码
ftp.getwelcome()  # 打印出欢迎信息
try:
    ftp.quit()  # 发送QUIT命令给服务器并关闭掉连接。这是一个比较`缓和`的关闭连接方式,但是如果服务器对QUIT命令返回错误时,会抛出异常。
    ic('退出ftp服务器')
except:
    ftp.close()  # 单方面的关闭掉连接,不应该用在已经关闭的连接之后,例如不应用在quit()之后。
    ic('关闭ftp服务器')

get ‘220 Microsoft FTP Service\n’
resp ‘220 Microsoft FTP Service’
cmd ‘USER share’
put ‘USER share\r\n’
get ‘331 Password required\n’
resp ‘331 Password required’
cmd ‘PASS *’
put ‘PASS *\r\n’
get ‘230 User logged in.\n’
resp ‘230 User logged in.’
welcome ‘220 Microsoft FTP Service’
cmd ‘QUIT’
put ‘QUIT\r\n’
get ‘221 Goodbye.\n’
resp ‘221 Goodbye.’
22:01:48|> ‘退出ftp服务器’

关于调试级别:
0:不输出任何日志,此为默认
1:打印命令和响应,但不是主体文本等。
2:显示所有详细日志

6.23.3 列出FTP服务器文件和目录

from ftplib import FTP

ftp = FTP()  # 设置ftp对象
ftp.connect("192.168.100.202", 21)  # 连接ftp服务器
ftp.login("share", "1")  # 登录ftp服务器,需要用户名,密码
files = ftp.nlst('Logs2')  # 获取目标目录中所有的文件,包括文件夹
print(files)
ftp.cwd(r'logs\test')  # 设置FTP当前操作的路径
print('*' * 60)
ftp.dir()  # 显示当前目录信息
ftp.quit()

[‘log.txt’, ‘log.txt.lnk’, ‘loglink.txt’, ‘log_hard.txt’, ‘Test’]


09-03-23 04:26PM 0 test.txt

6.23.4 从FTP服务器上下载和上传文件

from ftplib import FTP

ftp = FTP()  # 设置ftp对象
ftp.connect("192.168.100.202", 21)  # 连接ftp服务器
ftp.login("share", "1")  # 登录ftp服务器,需要用户名,密码
resp = ftp.sendcmd('OPTS utf8')  # 检测编码格式,否则上传中文文件名会出现乱码
if resp.startswith('200'):
    encoding = 'utf-8'
    ftp.encoding = encoding
filename = r'E:\Syncdisk\标准文档格式说明.docx'
file_handel = open(filename, "rb")
fn = '标准文档格式说明.docx'
ftp.storbinary('STOR %s' % fn, file_handel)  # 上传目标文件
file_handle = open('文档.docx', "wb").write  # 以写模式在本地打开文件
ftp.retrbinary("RETR %s" % fn, file_handle)  # 下载FTP文件
ftp.quit()

6.23.5 其它的一些操作

ftp.cwd(‘pathname’) # 设置FTP当前操作的路径
ftp.dir() # 显示目录下所有目录信息
ftp.nlst() # 获取目录下的文件
ftp.mkd(‘pathname’) # 新建远程目录
ftp.pwd() # 返回当前所在位置
ftp.rmd(‘dirname’) # 删除远程目录
ftp.delete(‘filename’) # 删除远程文件
ftp.rename(‘fromname’, ‘toname’) # 将fromname修改名称为toname。

文章来源:https://blog.csdn.net/crleep/article/details/135236656
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。