这篇教程总结几个非常实用的Python库写得很实用,希望能帮到您。 自带库一、datetime datetime是Python处理日期和时间的标准库。 1、获取当前日期和时间 >>> from datetime import datetime>>> now = datetime.now()>>> print(now)2021-06-14 09:33:10.460192>>> print(type(now))<class 'datetime.datetime'> 2、获取指定日期和时间 >>> from datetime import datetime>>> dt = datetime(2021,6,10,12,0)>>> print(dt)2021-06-10 12:00:00 3、datetime转换为timestamp 在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0 (1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp(时间戳)。 >>> from datetime import datetime>>> now = datetime.now()>>> nowdatetime.datetime(2021, 6, 14, 9, 38, 34, 969006)>>> now.timestamp() #把datetime转换为timestamp1623634714.969006 4、timestamp转换为datetime >>> from datetime import datetime>>> timestamp = 1623634714.969006>>> print(datetime.fromtimestamp(timestamp))2021-06-14 09:38:34.969006 5、str转换为datetime >>> from datetime import datetime>>> day = datetime.strptime('2021-6-10 12:12:12','%Y-%m-%d %H:%M:%S')>>> print(day)2021-06-10 12:12:12 6、datetime转换为str >>> from datetime import datetime>>> now = datetime.now()>>> print(now)2021-06-14 09:49:02.281820>>> print(type(now))<class 'datetime.datetime'>>>> str_day = now.strftime('%Y-%m-%d %H:%M:%S')>>> print(str_day)2021-06-14 09:49:02>>> print(type(str_day))<class 'str'> 二、collections collections是Python内建的一个集合模块,提供了许多有用的集合类,其中统计功能非常实用。 Counter Counter 是一个简单的计数器,例如,统计字符出现的个数
>>> from collections import Counter>>> c = Counter()>>> str = 'jdkjefwnewnfjqbefbqbefqbferbb28934`83278784727'>>> c.update(str)>>> cCounter({'b': 6, 'e': 5, 'f': 5, '8': 4, '7': 4, 'j': 3, 'q': 3, '2': 3, 'w': 2, 'n': 2, '3': 2, '4': 2, 'd': 1, 'k': 1, 'r': 1, '9': 1, '`': 1}) 三、base64 Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe 、jpg 、pdf 这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。 >>> import base64>>> base64.b64encode(b'binary/x00string')b'YmluYXJ5AHN0cmluZw=='>>> base64.b64decode(b'YmluYXJ5AHN0cmluZw==')b'binary/x00string' 四、hashlib Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 我们以常见的摘要算法MD5为例,计算出一个字符串的MD5值: >>> import hashlib>>> md5 = hashlib.md5()>>> md5.update("程序员唐丁".encode('utf-8'))>>> print(md5.hexdigest())05eb21a61d2cf0cf84e474d859c4c055 摘要算法能应用到什么地方?举个常用例子: 任何允许用户登录的网站都会存储用户登录的用户名和口令。如何存储用户名和口令呢?方法是存到数据库表中。如果以明文保存用户口令,如果数据库泄露,所有用户的口令就落入黑客的手里。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。正确的保存口令的方式是不存储用户的明文口令,而是存储用户口令的摘要,比如MD5,当用户登录时,首先计算用户输入的明文口令的MD5,然后和数据库存储的MD5对比,如果一致,说明口令输入正确,如果不一致,口令肯定错误。 第三方库一、requests requests是一个Python第三方库,处理URL资源特别方便。在之前的”爬虫简介“文章中我们已经初步认识了它。 1、安装requests 如果安装了Anaconda,requests就已经可用了。否则,需要在命令行下通过pip安装: 如果遇到Permission denied安装失败,请加上sudo重试。 2、通过GET访问豆瓣首页,只需要几行代码: >>> import requests>>> r = requests.get('https://www.douban.com/') # 豆瓣首页>>> r.status_code200>>> r.textr.text'<!DOCTYPE HTML>/n<html>/n<head>/n<meta name="description" content="提供图书、电影、音乐唱片的推荐、评论和...' 3、对于带参数的URL,传入一个dict作为params 参数: >>> r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})>>> r.url # 实际请求的URL'https://www.douban.com/search?q=python&cat=1001' 4、requests自动检测编码,可以使用encoding 属性查看: 5、无论响应是文本还是二进制内容,我们都可以用content 属性获得bytes 对象: >>> r.contentb'<!DOCTYPE html>/n<html>/n<head>/n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">/n...' 6、requests的方便之处还在于,对于特定类型的响应,例如JSON,可以直接获取: >>> r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')>>> r.json(){'query': {'count': 1, 'created': '2017-11-17T07:14:12Z', ... 7、需要传入HTTP Header时,我们传入一个dict作为headers 参数: >>> r = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})>>> r.text'<!DOCTYPE html>/n<html>/n<head>/n<meta charset="UTF-8">/n <title>豆瓣(手机版)</title>...' 8、要发送POST请求,只需要把get() 方法变成post() ,然后传入data 参数作为POST请求的数据: >>> r = requests.post('https://accounts.douban.com/login', data={'form_email': 'abc@example.com', 'form_password': '123456'}) 9、requests默认使用application/x-www-form-urlencoded 对POST数据编码。如果要传递JSON数据,可以直接传入json参数: params = {'key': 'value'}r = requests.post(url, json=params) # 内部自动序列化为JSON 10、类似的,上传文件需要更复杂的编码格式,但是requests把它简化成files 参数: >>> upload_files = {'file': open('report.xls', 'rb')}>>> r = requests.post(url, files=upload_files) 在读取文件时,注意务必使用'rb' 即二进制模式读取,这样获取的bytes 长度才是文件的长度。 把post() 方法替换为put() ,delete() 等,就可以以PUT或DELETE方式请求资源。 11、除了能轻松获取响应内容外,requests对获取HTTP响应的其他信息也非常简单。例如,获取响应头: >>> r.headers{Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Content-Encoding': 'gzip', ...}>>> r.headers['Content-Type']'text/html; charset=utf-8' 12、requests对Cookie做了特殊处理,使得我们不必解析Cookie就可以轻松获取指定的Cookie: >>> r.cookies['ts']'example_cookie_12345' 13、要在请求中传入Cookie,只需准备一个dict传入cookies 参数: >>> cs = {'token': '12345', 'status': 'working'}>>> r = requests.get(url, cookies=cs) 14、最后,要指定超时,传入以秒为单位的timeout参数: >>> r = requests.get(url, timeout=2.5) # 2.5秒后超时 二、chardet 字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候。虽然Python提供了Unicode表示的str 和bytes 两种数据类型,并且可以通过encode() 和decode() 方法转换,但是,在不知道编码的情况下,对bytes 做decode() 不好做。 对于未知编码的bytes ,要把它转换成str ,需要先“猜测”编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。 当然,我们肯定不能从头自己写这个检测编码的功能,这样做费时费力。chardet这个第三方库正好就派上了用场。用它来检测编码,简单易用。 1、安装chardet 如果安装了Anaconda,chardet就已经可用了。否则,需要在命令行下通过pip安装: 如果遇到Permission denied安装失败,请加上sudo重试。 2、当我们拿到一个bytes 时,就可以对其检测编码。用chardet检测编码,只需要一行代码: >>> chardet.detect(b'Hello, world!'){'encoding': 'ascii', 'confidence': 1.0, 'language': ''} 三、psutil 用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps ,top ,free 等等。要获取这些系统信息,Python可以通过subprocess 模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。 在Python中获取系统信息的另一个好办法是使用psutil 这个第三方模块,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。 1、安装psutil 如果安装了Anaconda,psutil就已经可用了。否则,需要在命令行下通过pip安装: 如果遇到Permission denied安装失败,请加上sudo重试。 2、获取CPU信息 我们先来获取CPU的信息: >>> import psutil>>> psutil.cpu_count() # CPU逻辑数量4>>> psutil.cpu_count(logical=False) # CPU物理核心2# 2说明是双核超线程, 4则是4核非超线程 3、统计CPU的用户/系统/空闲时间: >>> psutil.cpu_times()scputimes(user=10963.31, nice=0.0, system=5138.67, idle=356102.45) 4、获取内存信息 使用psutil获取物理内存和交换内存信息,分别使用: >>> psutil.virtual_memory()svmem(total=8589934592, available=2866520064, percent=66.6, used=7201386496, free=216178688, active=3342192640, inactive=2650341376, wired=1208852480)>>> psutil.swap_memory()sswap(total=1073741824, used=150732800, free=923009024, percent=14.0, sin=10705981440, sout=40353792) 返回的是字节为单位的整数,可以看到,总内存大小是8589934592 = 8 GB,已用7201386496 = 6.7 GB,使用了66.6%。 而交换区大小是1073741824 = 1 GB。 5、获取磁盘信息 可以通过psutil获取磁盘分区、磁盘使用率和磁盘IO信息: >>> psutil.disk_partitions() # 磁盘分区信息[sdiskpart(device='/dev/disk1', mountpoint='/', fstype='hfs', opts='rw,local,rootfs,dovolfs,journaled,multilabel')]>>> psutil.disk_usage('/') # 磁盘使用情况sdiskusage(total=998982549504, used=390880133120, free=607840272384, percent=39.1)>>> psutil.disk_io_counters() # 磁盘IOsdiskio(read_count=988513, write_count=274457, read_bytes=14856830464, write_bytes=17509420032, read_time=2228966, write_time=1618405) 好了,就先介绍这么多吧,更多实用的Python库后面唐丁再给大家一一介绍 到此这篇关于总结几个非常实用的Python库的文章就介绍到这了,更多相关Python库内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! 手残删除python之后的补救方法 仅用几行Python代码就能复制她的U盘文件? |