利用FTP服务器下载目录

import os,sys
from ftplib import FTP
from mimetypes import guess_type nonpassive = False #passive FTP by default
remotesite = '192.168.191.1'
remotedir = '.' #FTP的路径
remoteuser = () #因为我没设置密码,所以为空集 localdir = '.' #本地路径 clean_all = input( 'Clean local directory first? ')[:1] in ['y','Y'] #是否清除本地目录所有文件
#连接PFTP
print('connecting...')
connection = FTP(remotesite)
connection.login(*remoteuser)
connection.cwd(remotedir)
if nonpassive:
connection.set_pasv(False) #most servers do passive
#清除
if clean_all:
for localname in os.listdir(localdir):
try:
print('deleting local',localname)
os.remove(os.path.join(remotedir,localname))
except:
print('cannot delete', localname) count = 0
remotefiles = connection.nlst()
#只能下载目录中的文件,不能下载目录中的目录
for remotename in remotefiles[:5]:
if remotename in ('.','..') or not '.' in remotename:continue #判断是否目录,这里根据实际情况更改
mimetype,encoding = guess_type(remotename)
mimetype = mimetype or '?/?'
mimetype = mimetype.split('/')[0] localpath = os.path.join(localdir,remotename)
print('downing',remotename,'to',localpath,end=' ')
print('as',mimetype,encoding or '')
#保存文件
if mimetype == 'text' and encoding == None:
localfile = open(localpath,'w',encoding=connection.encoding)
callback = lambda line: localfile.write(line + '\n')
connection.retrlines('RETR '+remotename,callback)
else:
localfile = open(localpath,'wb')
connection.retrbinary('RETR '+remotename,localfile.write) localfile.close()
count += 1 connection.quit()
print('Done:',count,'file download.')

利用FTP服务器上传目录

import os,sys
from ftplib import FTP
from mimetypes import guess_type nonpassive = False #passive FTP by default
remotesite = '192.168.191.1'
remotedir = 'RRR' #FTP的路径
remoteuser = () #因为我没设置密码,所以为空集 localdir = 'TTT' #本地路径 clean_all = input( 'Clean local directory first? ')[:1] in ['y','Y'] #是否清除远程目录所有文件
#连接PFTP
print('connecting...')
connection = FTP(remotesite)
connection.login(*remoteuser)
connection.cwd(remotedir)
if nonpassive:
connection.set_pasv(False) #most servers do passive
#清除
if clean_all:
for remotename in connection.nlst():
try:
print('deleting local',remotename)
connection.delete(remotename)
except:
print('cannot delete', remotename) count = 0
localfiles = os.listdir(localdir)
#只能下载目录中的文件,不能下载目录中的目录
for localname in localfiles[:5]:
mimetype,encoding = guess_type(localname)
mimetype = mimetype or '?/?'
mimetype = mimetype.split('/')[0] localpath = os.path.join(localdir,localname)
print('downing',localname,'to',localpath,end=' ')
print('as',mimetype,encoding or '')
#保存文件
if mimetype == 'text' and encoding == None:
localfile = open(localpath,'rb')
connection.storlines('RETR '+localname,localfile)
else:
localfile = open(localpath,'rb')
connection.storbinary('RETR '+localname,localfile) localfile.close()
count += 1 connection.quit()
print('Done:',count,'file uploaded.')

2.4 利用FTP服务器下载和上传目录的更多相关文章

  1. 2.3 利用FTP服务器下载和上传文件

    二.利用FTP服务器的下载文件 from ftplib import FTP from os.path import exists def getfile(file,site,dir,user=(), ...

  2. FTP服务器文件上传的代码实现

    方式一: @Test public void testFtpClient() throws Exception { // 1.创建一个FtpClient对象 FTPClient ftpClient = ...

  3. 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)

    如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...

  4. 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传

    [源码下载] 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 后台 ...

  5. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介 ...

  6. (4)FTP服务器下载文件

    上一篇中,我们提到了怎么从FTP服务器下载文件.现在来具体讲述一下. 首先是路径配置.. 所以此处我们需要一个app.config来设置路径. <?xml version="1.0&q ...

  7. github下载和上传项目

    git下载和上传项目 下载: git clone +地址 上传: 1.git init 在当前项目的目录中生成本地的git管理(多一个.git文件夹,为隐藏文件) 2.git add .(注意最后面有 ...

  8. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹

    摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...

  9. 使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能

    我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再 ...

随机推荐

  1. visual studio code常用插件

    1.auto close tag2.chinese language pack for visual studio code3.debugger for chrome4.docker5.html cs ...

  2. Restful API接口调用的方法总结

    restful 接口调用的方法 https://www.cnblogs.com/taozhiye/p/6704659.html http://www.jb51.net/article/120589.h ...

  3. 必须添加对程序集"System.Core"的引用

    在项目下的web.config中添加 <compilation debug="true" targetFramework="4.0"> <as ...

  4. C#中抽象类和接口的区别与使用

    一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外 ...

  5. [C++ Primer Plus] 第4章、复合类型(一)程序清单——指针new和delete

    程序清单4.1 #include<iostream> using namespace std; void main(){ ]; yams[]=; yams[]=; yams[]=; ]={ ...

  6. topcoder srm 570 div1

    problem1 link 找到周期,每个周期的增量是相同的. problem2 link 对于分给某一个公司的有$c$个联通分量,其中$k$个联通分量只有1个节点,$c$个联通分量一共有$x$个节点 ...

  7. 拦截导弹nlogn解法

    题目 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国 ...

  8. Vue常见组件

    每一个组件都是一个vue实例 每个组件均具有自身的模板template,根组件的模板就是挂载点 每个组件模板只能拥有一个根标签 子组件的数据具有作用域,以达到组件的复用 根组件 <div id= ...

  9. SAP SD-销售模式-寄售(客户寄售)

    SAP SD-销售模式-寄售(客户寄售) http://blog.sina.com.cn/s/blog_a440b7ee01014kgq.html  http://www.doc88.com/p-23 ...

  10. 全文检索:haystack+elasticsearch

    优点: 1.查询速度快 2.支持中文分词准备工作:安装es软件 1.拷贝到ubuntu 2.docker load -i 文件路径 3.配置 修改ip地址 4.docker run -dti --ne ...