python filecmp标准库基础学习
# -*- coding: utf-8 -*-
# 作者:新手
__author__ = 'Administrator'
#文件的比较
import os,filecmp
#作用用于比较系统中的目录和文件
#例子2
def mkfile(name,body=None):
with open(name,'w')as name1:
name1.write(body or name)
return
def mk_dir(top):
if not os.path.exists(top):
os.mkdir(top)
curdir=os.getcwd()
os.chdir(top)
os.mkdir('dir1')
os.mkdir('dir2')
mkfile('dir1/file_only_in_dir1')
mkfile('dir2/file_only_in_dir2')
os.mkdir('dir1/file_only_in_dir1')
os.mkdir('dir2/file_only_in_dir2')
os.mkdir('dir1/common_file')
os.mkdir('dir2/common_file')
mkfile('dir1/common_file','this file is the same')
mkfile('dir2/common_file','this file is the same')
mkfile('dir1/not_the_same')
mkfile('dir2/not_the_same')
mkfile('dir1/file_in_dir1','This is a file in dir1')
os.mkdir('dir2/file_in_dir1')
os.chdir(curdir)
return
if __name__=='__main':
os.chdir(os.path.dirname(__file__)or os.getcwd())
print mk_dir('example1')
print mk_dir('example1/dir1/common_dir')
print mk_dir('example1/dir2/common_dir')
#比较目录/文件
print u'比较:',filecmp.cmp(r'a\a.txt',r'a\b.txt',shallow=True)
print u'比较:',filecmp.cmp(r'a\a.txt',r'a\1.doc',shallow=True)
"""
shallow解释:参数它会cmp()除了文件元数据外,是否还要查看文件内容,默认情况下使用os.stat()得到信息完成一个浅比较,而不查看内容,对于同时创建的相同大小文件,如果不比较其内容,会报告错误
如果非递归比较2个目录中一组文件,可以使用cmpfiles(),参数是目录名和2个位置上检查的文件列表
,传入公共文件列表应当只包含文件名(目录会导致匹配不成功),而且这些文件在2个位置上都应当出现,
"""
#例3
d1_contents=set(os.listdir(r'a'))
d2_contents=set(os.listdir(r'a'))
com=list(d1_contents & d2_contents)
f=[f for f in com if os.path.isfile(os.path.join(r'a',f))]
print f
a,b,c=filecmp.cmpfiles(r'a',r'a',f)
print a,b,c
#comfiles()返回3个文件列表,分别包含匹配文件,不匹配文件和不能比较文件(由于权限或者出于其他原因)
#比较目录:report()会打印比较2个目录的报告
filecmp.dircmp(r'a',r'a').report()
"""
它是输出一个纯文本报告,显示结果只包括给定目录内容,而不会递归比较其子目录,在这边,文件(a)被认为是相同的,因为并没有比较内容,无法让dircmp像cmp()那样比较
想要完成详细的递归比较,可以使用report_full_closure()
"""
filecmp.dircmp(r'a',r'a').report_full_closure()
#将输出包括所有同级子目录的比较
#程序中使用差异
#在请求计算时,对于未使用的数据,创建dircmp实例并不会带来开销
import pprint
dc=filecmp.dircmp(r'a',r'a')
print 'left:',
pprint.pprint(dc.left_list)
print '\nrigjt:'
pprint.pprint(dc.right_list)
#比较目录中包含文件和子目录分别列表left_list和right_list中
#可以向构造函数传入一个要忽略名字列表(该列表中指定的名字将被忽略),对输入进行过滤,默认情况下 ,RCS CVS和tags等名字会被忽略
dc=filecmp.dircmp(r'a',r'a',ignore=['common_file'])
print 'left1:',
pprint.pprint(dc.left_list)
print '\nrigjt1:'
pprint.pprint(dc.right_list)
#'common_file'这个会被从文件列表中被删除掉
#2个输入目录共有的文件名会保存在common,各目录独有的文件会在left_only和right_only中
dc=filecmp.dircmp(r'a',r'a')
print 'left2:',
pprint.pprint(dc.left_only)
print '\nrigjt2:'
pprint.pprint(dc.right_only)
#left目录是dircmp()第一个参数,right是第二个参数
#公共成员可以进一步分解为文件,目录和有趣(funny)元素(2个目录中类型不同的内容或者os.stat()指出错误的地方)
dc=filecmp.dircmp(r'a',r'a')
print 'leftx:',
pprint.pprint(dc.common_dirs)
print '\nrigjtx:'
pprint.pprint(dc.common_files)
pprint.pprint(dc.common_funny)
#文件之间的差别可以做类似的划分
dc=filecmp.dircmp(r'a',r'a')
print dc.same_files,dc.diff_files,dc.funny_files
#最后一点,子目录也会保存,从而能窗口地完成递归比较
dc=filecmp.dircmp(r'a',r'a')
print dc.subdirs
#属性subdirs是一个字典,将目录名映射到新的dircmp[对象
#Directories:使用os列出一个目录的内容
#此模块的官方文档:https://docs.python.org/2.7/library/filecmp.html?highlight=filecmp#module-filecmp
python filecmp标准库基础学习的更多相关文章
- python linecache标准库基础学习
#python标准库基础之:linecacge:高效读取文本文件#说明与作用"""可以从文件或者导入python模块获取文件,维护一个结果缓存,从而可以更高效地从相同文件 ...
- python calendar标准库基础学习
# -*- coding: utf-8 -*-# 作者:新手__author__ = 'Administrator'#标准库:日期时间基础学习:calendar:处理日期#例1import calen ...
- python StringIO标准库基础学习
#标准库:StringIO提供类文件API文本缓冲区#作用:可以处理内存中的文本,有2种不同的实现:cStringIP版本用c编写提高速度,StringIO用python来提供可移植性,与其他字符串连 ...
- python glob标准库基础学习
#glob文件名模式匹配#作用:使用unix shell规则查找与一个模式匹配文件名"""尽管glob api很小,但这个模块很强大,只要程序需要查找文件系统中名字与某种 ...
- python 标准库基础学习之开发工具部分1学习
#2个标准库模块放一起学习,这样减少占用地方和空间#标准库之compileall字节编译源文件import compileall,re,sys#作用是查找到python文件,并把它们编译成字节码表示, ...
- 【python】标准库的大致认识
正如那句 Python 社区中很有名的话所说的:“battery included”,Python 的一大好处在于它有一套很有用的标准库(standard library).标准库是随着 Python ...
- C 标准库基础 IO 操作总结
其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数.输出参数和返回值,接下来才能开始设计具体的实现过程.C 语言标准库提供的接口功能很有限,不像 Pyth ...
- Python的标准库介绍与常用的第三方库
Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...
- python 使用标准库连接linux实现scp和执行命令
import stat import pexpect 只显示关键代码: sqldb = localpath+database //获取database名字 if os.path.exists(sqld ...
随机推荐
- java总结文章
java总结文章 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks Talk is cheap. Show me th ...
- hadoop部署工具与配置工具
https://github.com/xianglei/phpHiveAdmin 随着Hadoop的推出,大数据处理实现了技术上的落地.但是对于一般的公司和开发者而言,Hadoop依旧是一个陌生或者难 ...
- Zend Framework学习日记(2)--HelloWorld篇(转)
Zend Framework学习日记(2)--HelloWorld篇 这一篇主要演示如何用zf命令行工具建立一个基于Zend Framework框架的工程,也是我初学Zend Framework的小练 ...
- Java基础知识强化55:经典排序之归并排序(MergeSort)
1. 归并排序的原理: 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例: 无序数组[6 2 4 1 5 9] ...
- [A Top-Down Approach][第一章 计算机网络和因特网]
[A Top-Down Approach][第一章 计算机网络和因特网] 标签(空格分隔): 计算机网络 介绍基本术语和概念 查看构成网络的基本硬件和软件组件. 从网络的边缘开始,考察在网络中运行的端 ...
- js获取页面名称
function pageName() { var strUrl = location.href; var arrUrl = strUrl.split("/"); ...
- (转)passwordStrength 基于jquery的密码强度检测代码使用介绍
使用很简单. 代码如下: $('#pass').passwordStrength(); XHTML 代码如下: <p><label>请输入密码:</label> ...
- C# 解析嵌套的json文件.
概述 今天我同学问我如何转换json文件,没处理过,网上搜了一下,json转excel的很少,反过来倒是有许多人写了工具. json文件的结构大致是这样的: {, , }, , "type& ...
- Word隐藏回车符技巧
每一次在Word中敲击回车时,都会留下一个回车符,回车次数多了回车符也就跟着变多了,这的确是太影响视觉效果了,我们要如何操作才能将这些回车符去掉呢?特意为大家献上Word2003和Word2007中隐 ...
- C++ Primer 5th 第3章 字符串、向量和数组
*****代码在Debian g++ 5.40 / clang++ 3.8(C++11)下编写调试***** 本章主要是关于字符串.数组的内容,以及一些简单的容器知识. 1.using的声明 usin ...