[python]删除目录重复的文件
python的filecmp模块中提供的一个cmp(file,file2[,shallow])是比较两文件是否相同,如果它们相同,则返回Ture,否则返回False。
扫描目录中重复文件的思路是二次循环迭代!:循环扫描文件,将文件与已扫描的文件逐个比对是否相同,如果不同则加入到已扫描列表
[......]
python的filecmp模块中提供的一个cmp(file,file2[,shallow])是比较两文件是否相同,如果它们相同,则返回Ture,否则返回False。
扫描目录中重复文件的思路是二次循环迭代!:循环扫描文件,将文件与已扫描的文件逐个比对是否相同,如果不同则加入到已扫描列表
[......]
List 是 Python 中使用比较频繁的数据类型,它的元素是有序集合的,即他们始终保持着初始时的定义(除非你对他们进行排序进行了操作)!
一、向List增加元素,方法有三个:append(),extend(),insert()
1、append() 追加单个元素到List的尾部,但只接受一个参数,参数可以是任何数据类型,被追加的元素在List中保持着原结构类型!
>>> lia = ["a","hello","append"]
>>> lia.append(“world”)
>>> print lia
['a', 'hello', 'append', 'world']
>>> lia[......]
温习一下以前在某一个引擎程序中用到的ConfigParser库!对于要编译成exe的程序,结合一个配置文件进行一些常规配置还是挺方便吧。而ConfigParser解析配置文件格式挺方便的,配置文件是由多个section构成,每个section下有多个配置项,如conf.ini:
[DB]
host=127.0.0.1
name=mydb
user=root
pwd=testpwd
[TH]
thread=5
timeout=30
[......]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import urllib url = "http://www.yabogo.com/" #urlopen() sock = urllib.urlopen(url) htmlCode = sock.read() sock.close fp = open("e:/1.html","wb") fp.write(htmlCode) fp.close #urlretrieve() urllib.urlretrieve(url, 'e:/2.html') |
urlopen() 与urlretrieve()都可以抓取网页内容,但:urlopen是先打开,然后就像操作本地文件一样读取或操作,提供的读取模式有:read(),readline(),readlines() ;其他一个重要的可用方法有:
*info():返回一个httplib.HTTPMessage 对象,远程服务器的头信息;
*getcode():返回状态,200=成功/404=未找到;
而urlretrieve却是直接下载保存,当然,如果没有指定保存路径,那默认会保存在系统临时目录中。另外,查看库文件看到,urlretrieve[......]
要抓取网页中的链接地址,我们当然可以通过抓取页面内容后再利用正则表达式匹配出URL地址!但Python内置的一个标准库却可以帮助我们更方便快捷地抓取出所要的内容,那就是sgmllib库了(SGML:即标准通过标记语言)![......]
近期技术团队在讨论通用验证码识别程序的问题,于是我找啊找查啊查有关PYthon在这方面探讨的资料,却发现PyTesser 这样一个好玩的程序!拿出来分享讨论一下:
PyTesser 是python的一个光学字符识别模块,它结合Tesseract OCR引擎来使用 ,能从一个图片或图像文件取出的字符串并输出。
使用PyTesser ,你无须安装Tesseract OCR引擎,但就必须要先安装PIL模块(Python Image Library, python的图形库)
官方介绍说明:
PyTesser is an Optical Character Recognit[......]
假设有这样一个函数,根据参数的不同值进行不同的处理:
1 2 3 4 5 6 7 8 9 10 11 | def getAgeByName(name): if name == "appen": age = 18 elif name == "banana": age = 20 elif name == "sydney": age = 22 elif name == "strawberry": age = 17 elif .... return age |
现在只有四个人,但后来越来越多的人加入我们的团队,不断地加入elif吗?这样做只会让程序看起来又长又臭,越来越难看!好,我们可以用字典来优化一下它![......]
其实,Python有一个内置方法可以实现对列表排序!
list.sort()
不过,学习嘛,拓展一下思维也好!
1 2 3 4 5 6 7 8 9 | list = [99,40,30,43,134,8,12] for i in range(len(list)-1,-1,-1): for pos in range(i): if list[pos] > list[pos+1]: list[pos],list[pos+1] = list[pos+1],list[pos] print list #这里如下只是为了观看实现过程而打印每一步变动 print list |
[......]
首先感谢团队的Leno、Damon、以及Joel,是他们让我接触到这个实用的知识点!装饰器是一个著名的设计模式,常用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。
比如:要查看一段程序的执行时间:以往我会在代码前后加入starTime 、endTime来处理;后来觉得在每段代码的前后加代码显得重复累赘,于是创建了一个时间器函数如:timeIt(fn),再将要查看程序执行时间的那段代码也包装成函数,然后将它与参数的形式传递给timeIt()
在相当长的一段时间内,我以为自己这样处理算得上是一个创举,起码一个函数就可以搞定,而不用在每段要检测的代码前后重复插入了吧!直[......]
ftplib是 Python的内置的一个标准模块,它提供了极强大的对FTP服务器的操作,通过它我们可以连接并操作FTP服务端,开始练习:
一、导入模块并进行连接
>>> from ftplib import FTP
>>> ftp = FTP(‘ftp.yabogo.com’)
>>> ftp.login(‘yourloginname’,'password’)
FTP登录成功