随笔分类 - python
摘要:工作需要实现一个查找出指定目录下md5值与excel表格中md5值相同的文件然后删掉的功能。我是这样做的:首先遍历指定目录,计算该目录下所有文件的md5值,以文件路径为key,md5值为value保存到一个字典中;然后读取excel表格中的md5,查看字典中的value是否包含该md5,如果包含...
阅读全文
摘要:工作中需要判断某个文本中的URL是否能正常访问,并且随机获取其中N行能正常访问的URL数据,我的思路是:读取文本每一行数据,用urlopen访问,将返回状态码为200的URL保存到一个列表,获得列表长度,使用random产生一个随机值作为列表下标,获取该行数据。具体实现如下: 1 import ur...
阅读全文
摘要:一.为什么要使用PySide?PySide由Qt的官方团队--Nokia Qt进行维护,集成了Qt和Python的优势。一个PySide程序员只需要使用简单的Python语言就能够发挥Qt的所有功能。PySide拥有LGPL2.1版授权许可,允许进行免费/开源软件和私有商业软件的开发。Matplot...
阅读全文
摘要:优点:1. pyinstaller 是跨平台的可以用在linux和windows系统上2. 操作非常简单,几个命令就搞定了,这个比py2exe容易用多了缺点:1. 打包后的体积过大,因为要带python.dll库,所以没有办法2. 不能和tkinter 等库,打包成单独一个文件1、下载pyinsta...
阅读全文
摘要:在python2.5+中可以用with来保证关闭打开的文件with open('hello.txt') as f: do some file operations为什么要引入with呢?在之前如果要保证关闭文件需要这样:f = open('hello.txt')try: do some fi...
阅读全文
摘要:首先运行easy_install pymongo命令安装pymongo驱动。然后执行操作:创建连接1 In [1]: import pymongo2 3 In [2]: connection = pymongo.Connection('localhost', 27017)切换到数据库malwareIn [3]: db = connection.malware获取collection1 In [4]: collection = db.malware注意:db和collection都是延时创建的,在添加Document时才真正创建Document添加,_id会自动创建1 In [6
阅读全文
摘要:转载请注明出处http://www.cnblogs.com/goodhacker/p/3387027.html1.python中类方法、类实例方法、静态方法有何区别?区别:类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数使用示例:python代码: 1 class A(object): 2 def foo(self,x): 3 #类实例方法 4 print "executing foo(%s,%s)"%(self,x) 5 6 ...
阅读全文
摘要:注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。 多进程间共享数据,可以使用 multiprocessing.Value 和 multiprocessing.Array (2)python多线程与多进程的区别 在UNIX平台上,...
阅读全文
摘要:为什么需要线程池 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。 我们将传统方案中的线程执行过程分为三个过程:T1、T2、T3: T1:线程创建时间 ...
阅读全文
摘要:一、类定义:class : 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象类的私有属性: __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs类的方法 在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数私有的类方法 __private_method 两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用...
阅读全文
摘要:最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下。 python的标准库里的日志系统从Python2.3开始支持。只要import logging这个模块即可使用。如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: 1 import logging 2 3 # 创建一个logger 4 logger = logging.getLogger('mylogger') 5 logger.setLevel(logging.DEBUG) 6 7 # 创建一个handler,用于写入日志文件 8 fh = logging.File
阅读全文
摘要:python BeautifulSoup模块的安装安装包下载地址:http://www.crummy.com/software/BeautifulSoup/#Download 文档:http://www.crummy.com/software/BeautifulSoup/documentation.html 下载后解压, 然后进入目录执行 :python setup.py build python setup.py install引入包要用 import bs4 from bs4 import BeautifulSoup利用BeautifulSoup抓取网页内容 1 # coding=utf-
阅读全文
摘要:本文参考http://zoulc001.iteye.com/blog/1186996广度优先算法介绍 整个的广度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的"子节点"(也就是超链接)提取出来,放入队列中依次进行抓取。被处理过的链接需要放 入一张表(通常称为Visited表)中。每次新处理一个链接之前,需要查看这个链接是否已经存在于Visited表中。如果存在,证明链接已经处理过, 跳过,不做处理,否则进行下一步处理。 初始的URL地址是爬虫系统中提供的种子URL(一般在系统的配置文件中指定)。当解析这些种子URL所表示的网页时,会产生新的URL(比如从页面中的&l
阅读全文
摘要:selenium 支持多个客户端:ruby,Java,python。可以用来对网页进行全面测试,支持真实浏览器测试。firefoxIEchromesafari支持多操作系统:Linuxwindowsmac osx安装:sudo pip install selenium测试:1 #coding=utf-82 from selenium import webdriver3 b = webdriver.Firefox()4 b.get("http://www.baidu.com")5 b.find_element_by_id("kw").send_keys(&
阅读全文
摘要:python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。1 import struct2 3 a=12.344 5 #将a变为二进制6 7 bytes=struct.pack('i',a)此时bytes就是一个string字符串,字符串按字节同a的二进制存储内容相同。再进行反操作现有二进制数据bytes(其实就是字符串),将它反过来转换成python的数据类型:a,=struct.unpack('i',bytes)注意,unpack返回的是tuple所以如果只有一个变
阅读全文
摘要:由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了。在网上查了一下,发现有以下几种方式传递参数:一.直接把sql查询语句完整写入字符串1 try:2 connection = MySQLdb.connect(user="secsel",passwd="secsel@55",host="192.168.138.55",db="anbench")3 except:4 print "Could not connect to MySQL ser
阅读全文
摘要:您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念。 如何生成斐波那契數列 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到。用计算机程序输出斐波那契數列的前 N 个数是一个非常简单的问题,许多初学者都可以轻易写出如下函数: 清单 1. 简单输出斐波那契數列前 N 个数1 >>> def fab(max):2 n, a, b = 0, 0, 13 ...
阅读全文
摘要:Python zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。 比如要读取一个Pythonzipfile模块,这里假设filename是一个文件的路径:1 import zipfile 2 z =zipfile.ZipFile(filename, 'r') 3 # 这里的第二个参数用r表示是读取zip文件,w是创建一个zip
阅读全文
摘要:1.创建数据库uliweb的数据库都在models.py文件里面,因此先创建该文件vim apps/blog/models.py添加如下两行:#coding=utf-8from uliweb.orm import * #对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法一个简单的blog数据库应该有:标题作者内容时间所以我们需在models.py 里面添加如下内容:class blogdata(Model): username = Field(CHAR) content = Field(TEXT) title = Field(CHA...
阅读全文
摘要:1.在apps/blog目录下创建form.py文件1 #coding:utf-82 3 from uliweb.form import*4 5 class blogform(Form):6 user = StringField(label = '姓名', required = True)7 content = TextField(label = '内容')blogform为一个继承自Form类的子类,包括user和content两个字段。2.然后在views中引用该类 1 #coding=utf-8 2 from uliweb import expose, f
阅读全文