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,一经查实,立即删除!

相关文章

架构师的要害

架构师的要害就是:架构师的领导力。 这是一个与技术完全不同的方向,是一个人文的方向。我认识的一位资深HR经理和我的老经理都曾经告诉过我:从技术的思维转换到与人打交 道的思维是非常难的;一旦一名技术员(程序员/测试…

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_…

mybatis学习(55):延迟加载

MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时,按照设置延迟规则推迟对关联对象的select查询。延迟加载可以有效的减少数据库压力。 注意:MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象都…

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…

three20 TTTableViewController + TTActionSheetController

1. 首页要实现TTActionSheetControllerDelegate interface TSPublishViewController : TTTableViewController<TTActionSheetControllerDelegate> {CATETYPE _cateType; } property(nonatomic,assign)CATETYPE cateType;end 2. 在init中声明URLMAP规则 - (id)initWithNib…

如果没有,那么就去创造

上周末在回北京的路上&#xff0c;看到一个广告牌&#xff0c;上面有一句&#xff1a;“如果没有&#xff0c;那么就去创造”。 是啊&#xff0c;自己的生活只能靠自己创造&#xff0c;从无到有。转载于:https://www.cnblogs.com/skogkatt/archive/2008/09/10/4163277.html

Java枚举类型 enum

定义 An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it.枚举类型是一种特殊数据类型&#xff0c;能够为一个变量定义一组预定义的常…

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

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

Git学习(3)GitHub和SVN的区别

GitHub和SVN的区别 之前用的版本控制系统是SVN&#xff0c;但是最近因为流行使用GitHub&#xff0c;这篇文章认识一下Git和SVN的区别。 1&#xff09;Git是分布式的&#xff0c;SVN不是&#xff1a; 这 是git和其它非分布式的版本控制系统&#xff0c;例如SVN&#xff0c;CVS等…

位运算 中度难度 子集

怎样将一个字符串中的单词单独存放在一个单词数组里&#xff1f; #include <iostream> #include <cstdio> #include <vector> #include <sstream> #include <string> using namespace std; int main() {string str[100];string str1 "i lo…

python3获取两个日期之间所有日期,以及比较大小

原创 2017年10月09日 14:00:14标签&#xff1a;python 1370 [python] view plaincopy import datetime [python] view plaincopy #获取两个日期间的所有日期 def getEveryDay(begin_date,end_date): date_list [] begin_date datetime.datetime.strptime(be…

关于换行符

在正则表达式中&#xff0c;有一个\n是newline的意思&#xff0c;又有一个\r是carriage return(就是这个导致了白痴中文翻译"回车")的意思 在处理String或者console输出的时候&#xff0c;无论带上哪个都能换行。 但是偏偏在txt中&#xff0c;哪个都不是标准的换行&a…

Java面试题15牛客 以下关于Integer与int的区别错误的是

Java面试题15牛客 以下关于Integer与int的区别错误的是 A int是java提供的8种原始数据类型之一 B Integer是java为int提供的封装类 C int的默认值为0 D Integer的默认值为1 懵逼树上懵逼果&#xff0c;懵逼树下你和我&#xff0c;这题难度一般&#xff0c;很显然&#xff…

用示例说明BitMap索引的效率要优于B-Tree索引

一、实验说明&#xff1a; 操作系统&#xff1a;rhel 5.4 x86 数据库&#xff1a;Oracle 11g R2 二、操作步骤&#xff1a; 首先创建一张t_btree表&#xff0c;并建立B-Tree索引&#xff0c;索引键是status&#xff1a; 1 SQL> create table t_btree as select * from dba_o…

使用grep -v时候,想去除多个pattern

使用grep -v时候&#xff0c;想去除多个pattern 原创 2014年05月27日 14:01:033845 grep -v with multiple patternsgrep test somefile | grep -v -e error -e critical -e warninggrep test somefile | grep -vE (error|critical|warning)grep test somefile | grep -vE err…

ISA Server 2004 0x80004005错误

客户的一台ISA Server EE中文版&#xff0c;运行服务器管理出现如下问题&#xff1a; “ISA服务器无法加载属性页”详细信息“错误&#xff1a;0x80004005未指定的错误”点“继续”后提示“管理单元初始化失败”&#xff0c;“确定”后再次弹出“ISA服务器无法加载属性页”的提…

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

Java面试题16 牛客 以下java程序代码&#xff0c;执行后的结果是&#xff08;&#xff09; 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…

Singularity 介绍

"...it is impossible to predict how a singularity will affect objects in its causal future." - NCSA Cyberia Glossary 一些有用的连接&#xff1a; Microsoft Research Singularity Project Singularity RDK Singularity: Rethinking Dependable System De…