python-常用模块

常用的内建模块

datetime

  • From datetime import datetime
  • Datetime.now()返回当前日期时间类型是datetime
  • Datetime(y,m,d,H,i,s)参数年月日时分秒 返回datetime类型
  • Datetime().timestamp()  datetime转换为timestamp
  • Datetime.fromtimestamp(t) timestamp转换为datetime类型
  • Datetime.utcfromtimestamp(t) timestamp转换为 UTC标准时间
  • Datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S’)将字符串转换为datetime类型
  • Datetime.now().strftime(%a, %b %d %H:%M)datetime类型转为字符串型
  • datetime加减 from datetime import datetime,timedelta
  • datetime.now()+timedelta(days=1)明天日期时间
  • datetime.now()-timedelta(hours=10)十小时之前的时间
  • datetime.now()+timedelta(days=1hours=10)一天十个小时后的日期
  • Timezone(timedelta(hours=8))创建时区
  • datetime.now().replace(tzinfo=Timezone(timedelta(hours=8)))强制设置时区
  • Datetime.utcnow().replace(tzinfo=timezone.utc)拿到utc时间,并强制时区
  • 时区对象.astimezone(timezone(timedelta(hours=8)))转换时区为北京时区


Collections集合模块


  • namedtuple 函数,用来创建自定义tuple对象,规定了tuple元素个数,并且可以用属性而不是索引来引用tuple某个元素
    • from collections import namedtuple
    • Point = namedtuple(‘Point’,[‘x’,y])
    • p=Point(1,2)
    • P.x
  • 单向列表list可以通过del l[index] l.pop(value)删除
  • Deque 双向列表,可以高效实现插入和删除操作
    • from collections import deque
    • q=deque([‘a’,’b’,’c’])
    • q.append(‘x’)
    • Q.appendleft(‘y’)
    • append(),pop(),appendleft(),popleft()等操作



  • defaultdict 使用dict时引用的key不存在会抛出keyerror 使用defaultdict,当key不存在时返回一个默认值
    • from collections import defaultdict
    • dd=defaultdict(lambda: ’N/A’)
    • dd[‘key1’]=‘abc’
    • dd[‘key1’]#key1存在返回值
    • Dd[‘key2’]#key2不存在返回默认值 N/A



  • Ordereddict 可以保证key的顺序
  • dict中,key是无序的,无法确定key的顺序
    • from collections import OrderedDict
    • od=OrderedDict()
    • od[‘z’]=1
    • od[‘y’]=2
    • od[‘x’]=3
    • list(od.keys())按照插入的顺序返回


  • Counter 计数器

from collections import deque

>>> q = deque(['a', 'b', 'c'])

>>> q.append('x')

>>> q.appendleft('y')

>>> q


Base64

  • 一种用64个字符表示任意二进制数据的方法
    • import base64
    • Base64.b64encode()编码
    • Base64.b64decode()解码
    • Base64.urlsafe_b64encide()
    • base64.urlsafe_b64decode()


Struct 

  • 实现bytes与其他二进制数据的转换
    • import struct
    • Struct.pack(‘>I’,10240099)把任意数据类型转换成bytes
      • I表示4字节无符号整数H表示2字节无符号整数
    • struct.unpack(‘>IH’,b'\xf0\xf0\xf0\xf0\x80\x80')bytes变成相应的数据类型


Hashlib


  • 提供了MD5SHA1算法,把任意长度的数据转换为一个长度固定的数据串
    • import hashlib
    • md5=hashlib.md5()
    • Md5.update(‘string’.encode(‘utf-8’))
    • md5.hexdigest()
  • sha1用法与md5一致


Hmac

  • 一种标准算法,md5的加强
    • import hmac 
    • message=b’hello,world!’;
    • key=b’secret’
    • h=hmac.new(key,message,digestmod=‘MD5’)
    • h.hexdigest()#查看生成的数据串


Itertools

  • 用于操作迭代对象
  • count()函数会创建一个无限迭代器
    • import itertools
    • natuals=itertools.count(1)
    • For n in natuals:
      • print(n)
  • cycle()会把传入的序列无限重复下去
    • import itertools
    • cs=itertools.cycle(‘ABC’)#字符串也是序列的一种
    • for c in cs:
      • print(c)

-repeat()函数把一个元素无限重复下去,指定了第二个参数就是重复的次数

    • itertools.repeat(‘A’,3)


  • chain()把一组迭代对象串联起来,形成更大的迭代器
    • for c in itertools.chain(‘ABC’,’XYZ’):
      • print(c)


  • groupby()把迭代器中相邻的重复元素挑出来放到一起
    • for key, group in itertools.groupby('AAABBBCCAAA'):
    • print(key,list(group))



Contextlib







Urllib

  • urllibrequest模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应:
  • url进行抓取
    • from urllib import request
    • With request.urlopen(‘url’) as f:
      • data=f.read();
      • print(‘status:’,f.status,f.reason)
      • For  k,v in f.getheaders():
        • print(‘%s:%s’ % (k,v))  
      • print(‘data’,data.decode(‘utf-8’))
  • get请求使用request对象(注意没有s),需要添加头信息
    • from urllib import request
    • req = request.Request('http://www.douban.com/')
    • req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
    • with request.urlopen(req) as f:
      • data=f.read();
      • print(‘status:’,f.status,f.reason)
      • For  k,v in f.getheaders():
        • print(‘%s:%s’ % (k,v))  
      • print(‘data’,data.decode(‘utf-8’))


  • post请求,需要传参数
  •  


from urllib import request, parse

print('Login to weibo.cn...')

email = input('Email: ')

passwd = input('Password: ')

login_data = parse.urlencode([

    ('username', email),

    ('password', passwd),

    ('entry', 'mweibo'),

    ('client_id', ''),

    ('savestate', '1'),

    ('ec', ''),

    ('pagerefer', 'https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F')

])


req = request.Request('https://passport.weibo.cn/sso/login')

req.add_header('Origin', 'https://passport.weibo.cn')

req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')

req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')


with request.urlopen(req, data=login_data.encode('utf-8')) as f:

    print('Status:', f.status, f.reason)

    for k, v in f.getheaders():

        print('%s: %s' % (k, v))

    print('Data:', f.read().decode(‘utf-8'))

  • HTMLParser
    • from html.parser import HTMLparser
    • From html.entitlies import name2codepoint
    • Class MyHTMLParser(HTMMLparser):
    •  
      • def handle_starttag(self, tag, attrs):

        print('<%s>' % tag)


    def handle_endtag(self, tag):

        print('</%s>' % tag)


    def handle_startendtag(self, tag, attrs):

        print('<%s/>' % tag)


    def handle_data(self, data):

        print(data)


    def handle_comment(self, data):

        print('<!--', data, '-->')


    def handle_entityref(self, name):

        print('&%s;' % name)


    def handle_charref(self, name):

        print('&#%s;' % name)

parser = MyHTMLParser()

parser.feed('''<html>

<head></head>

<body>

<!-- test html parser -->

    <p>Some <a href=\"#\">html</a> HTML&nbsp;tutorial...<br>END</p>

</body></html>’'')

feed()方法可以多次调用,不需要一次一定把整个html都塞进去


Pillow



  • 图像处理库
  • 安装Pillow pip3 install pillow
  • 具体使用,使用再查询


Chardet

  • 检测编码
  • 安装chardet,不过python3默认就已经安装了,没有的话自行安装
    • Pip3 install chardet
  • import chardet
  • Chardet.detect(b’hello,world’)



Psutil

  • 可以很方便的进行系统监控,跨平台
  • 安装pip3 install psutil
  • 如果遇到Permission denied安装失败,请加上sudo重试
  • 获取CPU信息
    • Import plutil
    • Print (Plutil.cpu_count())#cpu逻辑数量
    • print(logical=False)#cpu物理核心
    • psutil.cpu_times()#统计CPU的用户/系统/空闲时间
    • psutil.virtual_memory()#获取物理内存信息
    • psutil.swap_memory()#获取交换内存信息
    • psutil.disk_partitions() # 磁盘分区信息
    • psutil.disk_usage('/') # 磁盘使用情况
    • psutil.disk_io_counters() # 磁盘IO  
    • psutil.net_io_counters() # 获取网络读写字节/包的个数 
    • psutil.net_if_addrs() # 获取网络接口信息 
    • psutil.net_if_stats() # 获取网络接口状态
    • psutil.net_connections() #获取当前网络链接信息
    • psutil.pids() # 所有进程ID  
    • p = psutil.Process(3776) # 获取指定进程ID=3776,其实就是当前Python交互环境
      • P.name()
      • P.exe()
      • p.cwd()
      • p.cmdline()
      • P.ppid()
      • P.parent()
      • P.children()
      • P.status()
      • P.username()
      • P.create_time()
    • psutil.test() 模拟ps命令效果

Tkinter 图形界面

  • from tinter import *
  • GUI中,每个buttonlabel、输入框等都是一个widgetframe则是可以容纳其他widgetwidget
  • Pack()widget加到父容器中,并实现最简单的布局
  • gird()实现复杂的布局






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值