python常用库使用笔记

1、threading.Event类的实例方法is_set = isSet,即为同一个函数,当该类的实例已经调用了set()方法时,该函数返回True,否则为False

 

2、threading.Event机制类似于一个线程向其它多个线程发号施令的模式,其它线程都会持有一个threading.Event的对象,这些线程都会等待这个事件的“发生”,如果此事件一直不发生,那么这些线程将会阻塞,直至事件的“发生”。

具体参考:Python中使用threading.Event协调线程的运行

 

3、创建线程实例时,使用setDaemon函数的原因:[Python]Threading.Thread之Daemon线程

 

4、str类实例的strip([chars])方法去除str中头尾的相应字符[chars],如果没有提供chars,则去掉头尾的空格键。

 

5、os.walk(dstDir)返回一个生成器,生成器每次返回的内容为:当前遍历的路径,[该路径下的所有目录], [该路径下的所有文件]

 

6、exec的使用:

对于同一段代码:

 

def myTest():
    a = False
    exec('a=True')
    print 'a=', a
    
if __name__ == '__main__':
    myTest()

 

Python 2.7中,exec是关键字,解释器在碰到它会把后面的语句在当前空间运行,因此上面代码运行结果为:a=True

Python 3.x中,exec是一个函数,此时exec('a=True')相当于一个内嵌函数,函数内部变量为局部变量,此时mytest中的a与exec语句中的a并不是同一个变量,

因此上面代码的运行结果为a=False

参考链接:What's the difference between eval, exec, and compile in Python?

 

7、itertools.groupby()把迭代器中相邻的重复元素挑出来放在一起,例程:

 

for key, group in itertools.groupby('AAABBBCCAAA'):
     print key, list(group)


运行结果:

 

 

A ['A', 'A', 'A']
B ['B', 'B', 'B']
C ['C', 'C']
A ['A', 'A', 'A']

8、eval函数可以把json字符串转化为字典对象,等价于json.loads(json.dumps({'name':''jyj', 'age':18})),例程:

 

import json

a = json.dumps({'name':'jyj', 'age':18})
b = {'info':a}
print eval(b['info'])['name']

运行结果:jyj

 

9、select模块的使用:Python socket.accept nonblocking?

使用select模块,实现非阻塞sock编程

 

10、time和datetime模块:

(1)utc时间转化为当前时区(如东八区)时间:

import datetime

TIME_ZONE_OFFSET = 3600 * 8

data['create_time'] = datetime.datetime.fromtimestamp(data['create_time'].timestamp()+TIME_ZONE_OFFSET).\
            strftime('%Y-%m-%d %H:%M:%S')

11、python与http请求相关的库(包括自带和第三方库):

若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了

python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests

python3.X 有这些库名可用: urllib, urllib3, httplib2, requests

两者都有的urllib3和requests, 它们不是标准库. urllib3 提供线程安全连接池和文件post支持,与urllib及urllib2的关系不大. requests 自称HTTP for Humans, 使用更简洁方便

对于python2.X:
urllib和urllib2的主要区别:

urllib2可以接受Request对象为URL设置头信息,修改用户代理,设置cookie等, urllib只能接受一个普通的URL.
urllib提供一些比较原始基础的方法而urllib2没有这些, 比如 urlencode

具体参考:python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

12、处理带有非asic字符的url

urllib2.quote(u"Grønlandsleiret, Oslo, Norway".encode('UTF-8'))

相关参考:Python encode url with special characters

13、计算crc32值:

from zlib import crc32

crc32_val = crc32('hello,world') & 0xffffffff

14、Scrapy ImportError: No module named items问题解决方法:

1.改项目名称
2.改爬虫名称
3.在爬虫的代码里加入from __future__ import absolute_import

相关参考:Scrapy ImportError: No module named items

14、re模块找出匹配字符串的下标: 

[(m.start(0), m.end(0)) for m in re.finditer(pattern, string)]

15、python处理http实体,如:&

try:
...     # Python 2.6-2.7 
...     from HTMLParser import HTMLParser
... except ImportError:
...     # Python 3
...     from html.parser import HTMLParser
... 
>>> h = HTMLParser()
>>> print(h.unescape('£682m'))

相关参考:Decode HTML entities in Python string?

16、os库求文件的size

import os

stat_info = os.stat("test.py")

file_size = stat_info.st_size

 17、hashlib求文件hash值:

import sys
import hashlib

# BUF_SIZE is totally arbitrary, change for your app!
BUF_SIZE = 65536  # lets read stuff in 64kb chunks!

md5 = hashlib.md5()
sha1 = hashlib.sha1()

with open(sys.argv[1], 'rb') as f:
    while True:
        data = f.read(BUF_SIZE)
        if not data:
            break
        md5.update(data)
        sha1.update(data)

print("MD5: {0}".format(md5.hexdigest()))
print("SHA1: {0}".format(sha1.hexdigest()))

18、shutil删除非空文件夹

import os
import shutil

os.remove(path)   #删除文件
os.removedirs(path)   #删除空文件夹

shutil.rmtree(path)    #递归删除文件夹

19. 一行命令在当前路径启动文件服务器:

python2: python -m SimpleHTTPServer

python3: python3 -m http.server

20.使用urllib的parse来提取url的参数

from urllib import parse

url = "https://play.google.com/store/apps/developer?id=TikTok+Inc.&hl=en&gl=US"

app_id = parse.parse_qs(parse.urlparse(url).query).get("id")[0]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值