python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小

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

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

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

模块介绍:

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

功能实现:

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

复制代码
 1 # -*- coding: utf-8 -*-
 2 
 3 from ftplib import FTP
 4 
 5 ftp = FTP()
 6 ftp.connect('132.121.xx.xxx', 'xx909')
 7 ftp.login('crmyun_xxx', 'wyjjjjxJ')
 8 sum1 = 0
 9 sum2 = 0
10 value = 0
11 
12 def search_file(start_dir):
13     ftp.cwd(start_dir)
14     print ftp.pwd()
15     dir_res = []
16     ftp.dir('.', dir_res.append)   #对当前目录进行dir(),将结果放入列表
17     for i in dir_res:
18         if i.startswith("d"):
19             global sum1 
20             sum1 += 1
21             search_file(ftp.pwd()+"/"+i.split(" ")[-1])
22             ftp.cwd('..')
23         else:
24             global sum2, value
25             sum2 += 1
26             val = i.split(" ")[-1]
27             value += ftp.size(val)
28             if ftp.pwd().endswith('/'):              
29 #                print ftp.pwd()+val+"     "+str(ftp.size(val))+" B"   #打印出每个文件路径和大小
30                  pass
31             else:             
32 #                print ftp.pwd()+"/"+val+"     "+str(ftp.size(val))+" B"
33                  pass
34 def sum_file(file_path):
35     search_file(file_path)
36     print "folder number is "+str(sum1)+", file number is "+str(sum2)+", Totle size is "+str(value)+" B"
37     
38 
39 if __name__ == '__main__':
40     sum_file("/apps/crmyun/crmyun_755")
复制代码

展示结果:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 内核编码风格【转】

原文:http://www.cnblogs.com/baochuan/archive/2013/04/08/3006615.htmlLinux 内核编码风格序像其他大型软件一样,Linux制订了一套编码风格,对代码的格式、风格和布局做出了规定。我写这篇的目的也就是希望大家能够从中借鉴,有利…

mybatis学习(54):鉴定器

数据库表 数据库叫blog_gp1701 author表 数据 blog表 数据 comment表 数据 post表 数据 vechcle 目录结构 jar包导入 先给对应的jar包导入 建立一个junit单元测试 配置文件 log4j.properties ### \u914D\u7F6E\u6839 ### log4j.rootLogger debug,console ,fileAppender…

hadoop fs:du统计hdfs文件(目录下文件)大小的用法

hadoop fs:du统计hdfs文件(目录下文件)大小的用法 hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html 以下是我的使用统计文件时使用的记录: [tdv00938 ~]$ hadoop fs -ls /jc_…

sqoop操作之Oracle导入到HDFS

导入表的所有字段 sqoop import --connect jdbc:oracle:thin:192.168.1.100:1521:ORCL \ --username SCOTT --password tiger \ --table EMP -m 1; 查看执行结果: hadoop fs -cat /user/hadoop/EMP/part-m-00000 7369,SMITH,CLERK,7902,1980-12-17 00:00:00.0,800,n…

ps学习1:去除图片上的文字

首先我们看到如图所示的图,这个时候我们要给他右上角的文字去除 首先打开我们的ps工具--我登陆的在线ps教程 https://www.uupoop.com/ 点击编辑---填充 保存 完成修改

Java面试题16 牛客 以下java程序代码,执行后的结果是()

Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test { public static void main(String[] args) { Object o new Object() { public boolean equals(Object o…

Hive压缩说明

为什么要压缩 在Hive中对中间数据或最终数据做压缩,是提高数据吞吐量和性能的一种手段。对数据做压缩,可以大量减少磁盘的存储空间,比如基于文本的数据文件,可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减…

kubelet源码学习(一):kubelet工作原理、kubelet启动过程

本文基于Kubernetes v1.22.4版本进行源码学习 1、kubelet工作原理 1)、kubelet核心工作 kubelet的工作核心就是一个控制循环,即:SyncLoop(图中的大圆圈)。而驱动这个控制循环运行的事件,包括:P…

Java面试题18 牛客 假定Base b = new Derived();

Java面试题18 牛客 假定Base b new Derived(); 调用执行b.methodOne()后,输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class Base { public…

ReactOS,硬件抽象层,HAL概述

分析环境reactos0.3.4 ,i386体系] ReactOS的硬件抽象层 HAL(Hardware Abstraction Layer)位于OS与硬件的中间,和windows的hal原理基本一致,硬件抽象层隐藏特定平台的硬件接口细节,为上层的系统提供标准的稳定的虚拟硬件平台&…

[给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉...

这是我的文章备份,原文请看: [给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉 http://www.dotblogs.com.tw/mis2000lab/archive/2012/03/15/game_ove…

Java面试题19 牛客下面有关java的引用类型,说法正确的有?

Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可…

MapReduce运行机制

相关链接 MapReduce中Shuffle机制详解——Map端Shuffle链接 MapReduce中Shuffle机制详解——Reduce端Shuffle链接MapReduce将作业job的整个运行过程分为两个阶段:Map阶段和Reduce阶段。按照时间顺序包括:输入分片(input split)、m…

WebService Software Factory 设计草图

以下是根据WSSF设计理念,按现公司的业务需求设计的接口项目拟稿,实现细分。仅供参考。(WSSF---ASMX版) 建议用1680*1050分辩浏览 转载于:https://www.cnblogs.com/RuiLei/archive/2008/10/05/1304160.html

Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系

Java面试题 20在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?() A:手机与小米手机 B:企业家与雷军 C:编程语言与Java D:中国与北京 类之间存在以下…

MapReduce计数器

原文链接:http://itfish.net/article/61067.html 1、MapReduce计数器是什么?计数器是用来记录job的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况。 2、MapReduce计数器能做什么…

编写“线围棋”程序-2-可开局

棋盘有了,怎么支持在上面落子呢? 只要解决下面3个问题就可以了: 1.响应鼠标点击事件,获得“下棋子”的动作源。 2.修改和记录棋局状态。 3.在棋盘上显示棋局的状态。 为此,直接增加一个“棋局类“,也就是对…

Java面试题 21 下列说法正确的有()

下列说法正确的有() A 能被java.exe成功运行的java class文件必须有main()方法 B J2SDK就是Java API C:Appletviewer.exe可利用jar选项运行.jar文件 D能被Appletviewer成功运行的java class文件必须有main()方法 蒙蔽树上蒙蔽果,蒙蔽树下…

[翻译]SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb

SQL Server 未公开的两个存储过程sp_MSforeachtable 和 sp_MSforeachdb 您是否曾经写过代码来处理数据库中的所有表?处理一个 SQL Server实例中的所有数据库的代码又该如何写?然则,您是否知道有多种方法可以解决这问题?您可以创建…

Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) A Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下 B 通…