pythonftp功能介绍(使用Python操作FTP实现上传和下载的方法)
类别:脚本大全 浏览量:334
时间:2021-10-23 10:58:04 pythonftp功能介绍
使用Python操作FTP实现上传和下载的方法搭建ftp服务器server端
|
# -*- coding:utf-8 -*- from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer # 实例化DummyAuthorizer来创建ftp用户 authorizer = DummyAuthorizer() # 参数:用户名,密码,目录,权限 authorizer.add_user( 'admin' , '123456' , r 'C:\Users\Administrator\Desktop\ftp' , perm = 'elradfmwMT' ) # 匿名登录 # authorizer.add_anonymous('/home/nobody') handler = FTPHandler handler.authorizer = authorizer # 参数:IP,端口,handler server = FTPServer(( '0.0.0.0' , 2121 ), handler) #设置为0.0.0.0为本机的IP地址 server.serve_forever() |
函数释义
Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下
|
ftp登陆连接 from ftplib import FTP #加载ftp模块 ftp = FTP() #设置变量 ftp.set_debuglevel( 2 ) #打开调试级别2,显示详细信息 ftp.connect( "IP" , "port" ) #连接的ftp sever和端口 ftp.login( "user" , "password" ) #连接的用户名,密码 print ftp.getwelcome() #打印出欢迎信息 ftp.cmd( "xxx/xxx" ) #进入远程目录 bufsize = 1024 #设置的缓冲区大小 filename = "filename.txt" #需要下载的文件 file_handle = open (filename, "wb" ).write #以写模式在本地打开文件 ftp.retrbinaly( "RETR filename.txt" ,file_handle,bufsize) #接收服务器上文件并写入本地文件 ftp.set_debuglevel( 0 ) #关闭调试模式 ftp.quit() #退出ftp ftp相关命令操作 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。 ftp.storbinaly( "STOR filename.txt" ,file_handel,bufsize) #上传目标文件 ftp.retrbinary( "RETR filename.txt" ,file_handel,bufsize) #下载FTP文件 |
FTP.quit()与FTP.close()的区别
- FTP.quit():发送QUIT命令给服务器并关闭掉连接。这是一个比较“缓和”的关闭连接方式,但是如果服务器对QUIT命令返回错误时,会抛出异常。
- FTP.close():单方面的关闭掉连接,不应该用在已经关闭的连接之后,例如不应用在FTP.quit()之后。
例:下载、上传文件
|
# coding: utf-8 from ftplib import FTP import time import tarfile import os # !/usr/bin/python # -*- coding: utf-8 -*- from ftplib import FTP def ftpconnect(host, username, password): ftp = FTP() # ftp.set_debuglevel(2) ftp.connect(host, 21 ) ftp.login(username, password) return ftp #从ftp下载文件 def downloadfile(ftp, remotepath, localpath): bufsize = 1024 fp = open (localpath, 'wb' ) ftp.retrbinary( 'RETR ' + remotepath, fp.write, bufsize) ftp.set_debuglevel( 0 ) fp.close() #从本地上传文件到ftp def uploadfile(ftp, remotepath, localpath): bufsize = 1024 fp = open (localpath, 'rb' ) ftp.storbinary( 'STOR ' + remotepath, fp, bufsize) ftp.set_debuglevel( 0 ) fp.close() if __name__ = = "__main__" : ftp = ftpconnect( "113.105.139.xxx" , "ftp***" , "Guest***" ) downloadfile(ftp, "Faint.mp4" , "C:/Users/Administrator/Desktop/test.mp4" ) #调用本地播放器播放下载的视频 os.system( 'start "C:\Program Files\Windows Media Player\wmplayer.exe" "C:/Users/Administrator/Desktop/test.mp4"' ) uploadfile(ftp, "C:/Users/Administrator/Desktop/test.mp4" , "test.mp4" ) <a href = "ftp://ftp.quit" rel = "external nofollow" >ftp.quit< / a>() |
FTP对象方法说明
- login(user='anonymous',passwd=”, acct=”) 登录 FTP 服务器,所有参数都是可选的
- pwd() 获得当前工作目录
- cwd(path) 把当前工作目录设置为 path 所示的路径
- dir ([path[,…[,cb]]) 显示 path 目录里的内容,可选的参数 cb 是一个回调函数,会传递给 retrlines()方法
- nlst ([path[,…]) 与 dir()类似, 但返回一个文件名列表,而不是显示这些文件名
- retrlines(cmd [, cb]) 给定 FTP命令(如“ RETR filename”),用于下载文本文件。可选的回调函数 cb 用于处理文件的每一行
- retrbinary(cmd,cb[,bs=8192[, ra]]) 与 retrlines()类似,只是这个指令处理二进制文件。回调函数 cb 用于处理每一块(块大小默认为 8KB)下载的数据
- storlines(cmd, f) 给定 FTP 命令(如“ STOR filename”),用来上传文本文件。要给定一个文件对象 f
- storbinary(cmd, f,[,bs=8192]) 与 storlines()类似,只是这个指令处理二进制文件。要给定一个文件对象 f,上传块大小 bs 默认为 8KB
- rename(old, new) 把远程文件 old 重命名为 new
- delete(path) 删除位于 path 的远程文件
- mkd(directory) 创建远程目录
- rmd(directory) 删除远程目录
- quit() 关闭连接并退出
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://www.cnblogs.com/hltswd/p/6228992.html
您可能感兴趣
- python列表中的数组(Python3.4学习笔记之列表、数组操作示例)
- 如何用python做一个弹窗(python实现祝福弹窗效果)
- python图形绘制教程(python绘制漏斗图步骤详解)
- python 模块详解(举例讲解Python常用模块)
- pythonmysql使用教程(Python异步操作MySQL示例使用aiomysql)
- python简易版学生管理系统(python3.6实现学生信息管理系统)
- python用指针合并两个有序数组(Python3实现计算两个数组的交集算法示例)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- python扫描服务器端口(Python实现的对本地host127.0.0.1主机进行扫描端口功能示例)
- 如何利用python编写日期的程序(Python读取指定日期邮件的实例)
- python批量图像换背景(详解Python给照片换底色蓝底换红底)
- python密码错误3次不能再输入(Python实现账号密码输错三次即锁定功能简单示例)
- python多线程实现(python多线程并发让两个LED同时亮的方法)
- python中dict怎么创建(Python数据类型之Dict字典实例详解)
- python与气象(使用Python和Prometheus跟踪天气的使用方法)
- pythonssl版本(解决Python 使用h5py加载文件,看不到keys的问题)
- 鞠婧祎和杨紫两种风格的女生,你心里谁比较美(鞠婧祎和杨紫两种风格的女生)
- 三千年第一美女鞠婧祎出演白素贞pk杨紫,颜值胜赵雅芝王祖贤(三千年第一美女鞠婧祎出演白素贞pk杨紫)
- 成都轨道交通13号线一期工程最新进展(成都轨道交通13号线一期工程最新进展)
- 越南没事(越南没事情做)
- 重庆旅游攻略(重庆旅游3-4天攻略最佳线路)
- 周杰伦演唱会门票(周杰伦演唱会门票多少钱一张2023)
热门推荐
- mysql的三种模式(详解 MySQL的FreeList机制)
- docker配置阿里云镜像(Docker镜像的制作,上传,拉取和部署操作利用阿里云)
- php命名空间真的存在吗(PHP中命名空间的使用例子)
- 搭建php和mysql的运行环境(Windows环境开发PHP完整配置教程Apache+Mysql+PHP)
- mysql分区表的优缺点(MySQL数据表分区策略及优缺点分析)
- redhat6.5安装mysql(Redhat7.3安装MySQL8.0.22的详细教程二进制安装)
- mysql 快速迁移到历史表(MySQL 线上日志库迁移实例)
- 进程和线程的区别有哪些
- php集成支付(ThinkPHP框架整合微信支付之刷卡模式图文详解)
- css浮动边距加倍错误怎么办(详解CSS外边距折叠引发的问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9