本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。

主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类似Windows如下功能:

模块介绍:

 from ftplib import FTP
ftp = FTP() #设置变量
ftp.set_debuglevel(2) #打开调试级别2 显示详细信息
ftp.connect("IP", "port") #连接ftp, IP和端口
ftp.log("user", "password") #连接的用户名、密码 ftp.cwd(pathname) #设置FTP当前操作的路径
ftp.dir() #显示目录下的文件信息
ftp.nlst() #获取目录下的文件
ftp.mkd(pathname) #新建远程目录
ftp.pwd() #返回当前所在位置
ftp.rmd(dirname) #删除远程目录
ftp.delete(filename) #删除远程文件
ftp.rename(from_name, to_name) #修改文件名
ftp.storbinaly("STOR filename.txt", file_handel, bufsize) # 上传目标文件
ftp.retrbinaly("RETR filename.txt", file_handel, bufsize) # 上传FTP文件

功能实现:

ftp.dir() 能显示目录下的文件信息,考虑到要分别对文件夹个数和文件数目进行统计,文件夹下存在文件夹和文件嵌套;将dir()后的目录信息放入列表,对列表进行操作;进入子文件夹后进行递归调用操作。

 # -*- coding: utf-8 -*-

 from ftplib import FTP

 ftp = FTP()
ftp.connect('132.121.xx.xxx', 'xx909')
ftp.login('crmyun_xxx', 'wyjjjjxJ')
sum1 = 0
sum2 = 0
value = 0 def search_file(start_dir):
ftp.cwd(start_dir)
print ftp.pwd()
dir_res = []
ftp.dir('.', dir_res.append) #对当前目录进行dir(),将结果放入列表
for i in dir_res:
if i.startswith("d"):
global sum1
sum1 += 1
search_file(ftp.pwd()+"/"+i.split(" ")[-1])
ftp.cwd('..')
else:
global sum2, value
sum2 += 1
val = i.split(" ")[-1]
value += ftp.size(val)
if ftp.pwd().endswith('/'):
# print ftp.pwd()+val+" "+str(ftp.size(val))+" B" #打印出每个文件路径和大小
pass
else:
# print ftp.pwd()+"/"+val+" "+str(ftp.size(val))+" B"
pass
def sum_file(file_path):
search_file(file_path)
print "folder number is "+str(sum1)+", file number is "+str(sum2)+", Totle size is "+str(value)+" B" if __name__ == '__main__':
sum_file("/apps/crmyun/crmyun_755")

展示结果:

python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小的更多相关文章

  1. socket实现两台FTP服务器指定目录下的文件转移(不依赖第三方jar包)

    通过socket实现两台FTP服务器指定目录下的文件转移,其中包含了基础了ftp文件列表显示.上传和下载.这里仅供学习用,需掌握的点有socket.ftp命令.文件流读取转换等 完整代码如下: Ftp ...

  2. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  3. 获取小众ftp服务器指定目录内容列表

    今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...

  4. 我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)

    今天使用正则表达式匹配指定目录下的所有媒体文件,下面将这份代码简化了,可以收藏下来,当作工具类. package match; import java.io.File; import java.uti ...

  5. jmeter:清除本地指定目录下的所有类型文件

    1,创建一个sampler 2,要在本地有一个目录的文件 3,直接上代码 String path = "C:\\临时文件\\test111" ;         File file ...

  6. qt获取指定目录下符合条件的文件路径

    1)设置名称过滤器 QDir * dir = new QDir(路径); QStringList filter; Filter << QStringLiteral(“筛选的文件条件,如.x ...

  7. python获取指定目录下所有文件名os.walk和os.listdir

    python获取指定目录下所有文件名os.walk和os.listdir 觉得有用的话,欢迎一起讨论相互学习~Follow Me os.walk 返回指定路径下所有文件和子文件夹中所有文件列表 其中文 ...

  8. java-IO流(File对象-深度遍历指定目录下的文件夹和文件)

    需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File( ...

  9. Python批量删除指定目录下的指定类型的文件

    Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...

随机推荐

  1. 配置JAVA开发环境

    以下为搭建java的开发环境...... 第一步:安装JDK 1. 了解一下 JVM(Java Virtual Machine—Java虚拟机) JRE(Java Runtime Environmen ...

  2. 字符串format拼接格式化

    # ###字符串的格式化 format"""(1)顺序传参(2)索引传参(3)关键字传参(4)容器类型传参(列表和元组) {} 相当于占位符""&qu ...

  3. 清除微信小程序的缓存

    小程序会在本地存储数据,当服务器数据更新后,通常在小程序上显示的还是旧的数据,点击右上角的关闭按钮,再次打开小程序同样没有更新. 怎样才能完全清除小程序的缓存数据? 删除小程序的方法是: 1.第一步: ...

  4. http/ftp等的URL匹配正则表达式 ZT

    网上流传着多种匹配URL的正则表达式版本,但我经过试验,最好用的还是从stackoverflow上查到的: (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_| ...

  5. clearfix 用法

    如果有一个DIV作为外部容器,内部的DIV如果设置了float样式,则外部的容器DIV因为内部没有 clear,导致不能被撑开.看下面的例子:Div布局如下:Css代码如下:.out{border:1 ...

  6. day 12 名称空间和闭包函数

    函数嵌套 按照函数的两个阶段分为: 嵌套调用:在一个函数内部调用另一个函数 嵌套定义:在一个函数内部定义另一个函数 名称空间(namespace):存储名字的内存区域 名称空间的分类: 内置名称空间: ...

  7. 跨源资源共享(CORS)概念、实现(用Spring)、起源介绍

    本文内容引用自: https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/ https://developer.m ...

  8. C语言求矩阵的逆

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <window ...

  9. git创建分支并上传仓库

    1. 新建分支 xxx 2.  git pull (目录下 命令行将线上分支拉倒本地) 3. git checkout xxx (切换到到该分支 ) (可使用 git status 查看目前处于哪一个 ...

  10. python 进程池的使用和坑

    from multiprocessing import Pool,Process import time,os def Foo(a):#创建函数 time.sleep(2) print('in the ...