全栈工程师开发手册 (作者:栾鹏)
python教程全解

python中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功能。

这里在本机上调试,目标主机也是本机。ftp信息如下表

主机地址192.168.8.102,端口号使用默认21端口,开启了匿名登录。所以在代码中登陆ftp账号密码为空。

ftp所需要的库已经集成在了python系统中

#coding:utf-8
#ftp演示,首先要在本机或远程服务器开启ftp功能
import sys,os,ftplib,socket
print("=====================FTP客户端=====================");HOST = '192.168.8.102'  #FTP主机
user = "username"
password = "pwd"
buffer_size = 8192#连接登陆
def connect():try:ftp = ftplib.FTP(HOST)ftp.login()#登录,参数user,password,acct均是可选参数,#f.login(user="user", passwd="password")return ftpexcept (socket.error,socket.gaierror):print("FTP登陆失败,请检查主机号、用户名、密码是否正确")sys.exit(0)print('已连接到: "%s"' % HOST)#中断并退出
def disconnect(ftp):ftp.quit()  #FTP.close():单方面的关闭掉连接。FTP.quit():发送QUIT命令给服务器并关闭掉连接#上传文件
def upload(ftp, filepath):f = open(filepath, "rb")file_name = os.path.split(filepath)[-1]try:ftp.storbinary('STOR %s'%file_name, f, buffer_size)print('成功上传文件: "%s"' % file_name)except ftplib.error_perm:return Falsereturn True#下载文件
def download(ftp, filename):f = open(filename,"wb").writetry:ftp.retrbinary("RETR %s"%filename, f, buffer_size)print('成功下载文件: "%s"' % filename)except ftplib.error_perm:return Falsereturn True#获取目录下文件或文件夹想详细信息
def listinfo(ftp):ftp.dir()  #查找是否存在指定文件
def find(ftp,filename):ftp_f_list = ftp.nlst()  #获取目录下文件、文件夹列表if filename in ftp_f_list:return Trueelse:return Falsedef main():ftp = connect()                  #连接登陆ftpdirpath = 'lp'                   #目录,不能使用lp/lp1这种多级创建,而且要保证你的ftp目录,右键属性不能是只读的try: ftp.mkd(dirpath)                 #新建远程目录except ftplib.error_perm:print("目录已经存在或无法创建")try:ftp.cwd(dirpath)             #重定向到指定路径except ftplib.error_perm:print('不可以进入目录:"%s"' % dirpath)print(ftp.pwd())                        #返回当前所在位置try: ftp.mkd("dir1")                  #在当前路径下创建dir1文件夹except ftplib.error_perm:print("目录已经存在或无法创建")upload(ftp,"D:/test.txt")       #上传本地文件filename="test1.txt"ftp.rename("test.txt", filename) #文件改名if os.path.exists(filename):   #判断本地文件是否存在os.unlink(filename)    #如果存在就删除download(ftp,filename)        #下载ftp文件listinfo(ftp)                   #打印目录下每个文件或文件夹的详细信息files = ftp.nlst()              #获取路径下文件或文件夹列表print(files)ftp.delete(filename)              #删除远程文件    ftp.rmd("dir1")                  #删除远程目录ftp.quit()  #退出if __name__ == '__main__':main()

python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改相关推荐

  1. 2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程——使用theos tweak 注入hook修改游戏执行代码上传动态头像

    2020年 IOS 逆向 反编译 注入修改游戏或APP的调用参数新手系列教程--使用theos tweak 注入hook修改游戏执行代码上传动态头像 开篇 需求&最终效果 环境要求与即将使用的 ...

  2. dropzone.js php,Laravel 5.1 中基于 Dropzone.js 实现图片拖拽上传及删除功能

    注:本教程代码适用于Laravel 5.1版本. 1.概述 Dropzone 是目前最好的免费文件拖拽上传库,它拥有很多特性和选项以便你可以使用多种方式来自定义. 在Laravel项目集成Dropzo ...

  3. 阿里云oss 使用, 基于Nginx 配置云服务器+oss的内网访问 , 及使用Java SDK 完成上传,下载,删除,查询文件列表操作

    一.同阿里产品,云服务器和存储对象oss-配置内网访问 阿里存储对象oss 地址: https://oss.console.aliyun.com/overview 配置须知 通过Nginx 进行网络转 ...

  4. mac 下配置连接Linux服务器方法,上传下载文件操作

    1.先按照文档在本地生成SSHkey 2.mac输入 sudo -i 进入超级管理员#模式下,然后 创建用户 #useradd XXXadmin #passwd XXXadmin XXXadmin用户 ...

  5. Asp.net实现MVC处理文件的上传下载删除功能实例教程

    上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习As ...

  6. crt中 新建的连接存储在哪_SecureCRT上传和下载文件(下载默认目录)

    SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使 ...

  7. java操作hadoop hdfs,实现文件上传下载demo

    本文主要参考了Hadoop HDFS文件系统通过java FileSystem 实现上传下载等,并实际的做了一下验证.代码与引用的文章差别不大,现列出来作为备忘. import java.io.*; ...

  8. python基础系列教程——python面向对象编程全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python面向对象编程全解. 面向对象技术简介 一个类占有一个独立的空间,类中的属性叫做类变量,类中的函数,叫做类的方法. 类(Class) ...

  9. python基础系列教程——python基础语法全解

    点击此处​​​​​​​ python教程全解 了解python 1.  了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象 ...

最新文章

  1. MIUI应用权限设置
  2. IIS 应用程序池设置
  3. Etherchannel的配置 三层
  4. C语言 #pragma once - C语言零基础入门教程
  5. 【Flink】Flink 多个 OutputTag 不能直接 union 的问题
  6. 面试题:a==1 a==2 a==3 是 true 还是 false?
  7. 苹果基带芯片“分家” 一箭多雕
  8. vue属性绑定加载图片不成功
  9. HMM隐马尔科夫模型及股票预测
  10. HTTP报文-请求方式
  11. 字节岗位的薪酬体系曝光,看完感叹:真的不服不行
  12. C#+access做注册、登陆界面 【实测成功】
  13. ZAFU_2021_1_26_2021寒假个人赛第二场题解
  14. 第十二天学习内容 综合应用 推箱子和对战游戏
  15. SPA项目开发 之 登录注册
  16. open judge 1.6.4
  17. 计算字符串的相似度/华为机试(C/C++)
  18. Intellij IDEA 2019 激活码(注册码)
  19. 表白php制作教程视频,制作表白视频的软件 怎么制作出好看的表白小视频
  20. 无垠PE组合工具箱纯净无广告的PE启动盘

热门文章

  1. iOS 10 的 Speech 框架实现语音识别 (Swift)
  2. 语音识别准确率永远达不到100%?
  3. SpringBoot+Vue.js实现大文件分片上传、断点续传与极速秒传
  4. java jshelllink_02--Java Jshell的使用 最适合入门的Java教程
  5. vue打开二级或者三级页面传输对象,再刷新浏览器数据丢失问题解决(vue使用router传递数据)
  6. elementui中给input框赋值成功后input框不能进行编辑问题
  7. 【数据结构和算法笔记】:广义表
  8. python爬虫怎么发布请求_http请求如何在python爬虫中实现?
  9. sql server 创建数据库 语法
  10. idea git和svn间切换