python 常用标准库
标准库和第三方库第一手资料:
在线: 官方文档(https://docs.python.org/)
离线:交互式解释器(dir()、help()函数),IPython(tab键提示、?、??)
一、 日期和时间(https://docs.python.org/3/library/datetime.html)
datetime模块
date类-实例属性:
year
month
day
time类-实例属性:
hour
minute
second
microsecond
datetime类
date()实例方法->date对象
time()实例方法->time对象
now()类方法->datetime对象
strftime(str_format)实例方法->(datetime->str)
Y:4位年份
y:后2位年份
m:月份
d:日(月内第几天)
H:小时(24小时制)
I:小时(12小时制)
M:分钟
S:秒
f:微秒
strptime(dt_str, str_format)类方法->(str->datetime)
timedelta类(时间差,两个datetime对象 相减 得到 timedelta对象)
days属性
seconds属性
microseconds属性
total_seconds()方法
|
from datetime import datetime, timedelta dt_begin = datetime.now() for i in range(10 ** 8): temp = 3.2 / 2.3 dt_end = datetime.now() dt_diff = dt_end - dt_begin print('花费 {0.seconds} 秒, {0.microseconds} 毫秒'.format(dt_diff)) |
time():时间戳(1970.01.01 00:00:00到现在经过的秒)
sleep(seconds):延时
calendar
setfirstweekday(weekday),设置每周的起始日期码。0(星期一)到6(星期日)。
calendar(year,w=2,l=1,c=6):返回一个多行字符串格式的year年年历。
3个月一行,间隔距离为c。
每日宽度间隔为w字符。
每行长度为21* W+18+2* C。
l是每星期行数。
isleap(year):判断闰年
weekday(year, month, day) :返回给定日期的星期日期码
monthrange(year, month):返回给定月份的日期范围(元组:(第一天的星期日期码,月天数))
二、 数据格式
JSON:JavaScript对象表示法。(json在Python中叫做dict,在JS中叫做json)。
Json字符串(str_obj):所有的字符串只能用双引号(")不能用单引号(')。
Json字符串必须要有内容(len(str_obj) > 0),不能是空字符串('')
json
load(fp):文件对象->python内置对象
loads(str_obj):str->python内置对象(js:JSON.parse(str_obj))
object_pairs_hook,,控制数据如何转换,是一个继承自字典dict的类
dump(obj, fp):python内置对象->文件对象
dumps(obj):python内置对象->str(js: JSON.stringify(obj, null, 4))
ensure_ascii: (默认值:True,会将CJK字符转成Unicode嘛,以符合ASCII规范)。设置为False,可保证原样输出。
indent:(默认值:None,将会没有缩进和多余的空白输出,全部挤到一行。)。调试中,一般设置为4,和Python中风格一致。正式环境(比如web后端输出),不需要缩进。
csv
writer(wfp) (写入器) wfp: 可写的文件对象(open: newline)
writerow(list_obj)
writerows(2d_list_obj)
reader(rfp) (读取器) rfp: 可读的文件对象
pickle
dump(obj, wfp):(obj -> wfp),无返回值
dumps(obj):(obj -> bytes),返回值bytes类型
load(rfp):(rfp -> obj),返回值为obj,打开的必须是Python的pickle生成的文件。
loads(bytes_obj):(bytes -> obj),返回值为obj,加载的必须是Python的pickle的字节串,可以是dumps()方法生成的,也可以是从dump()方法生成的文件中以二进制方式读取的。
说明:
obj为Python内置类型(list、dict、str等)对象
wfp为可写的文件对象
rfp为可读的文件对象
bytes为二进制字符串(字节串)
三、 系统调用
os
getenv():获取环境变量
putenv():设置环境变量
environ 从系统启动时开始加载的环境变量(数据共享),dict兼容类型,可修改。
注意: os._Environ中有一个字典,字典中存储了环境变量,在Python进程启动时,就会获取系统中的环境变量,放入其中。
system():系统调用,需要传递一个必须的参数,字符串类型。
sep:目录分隔符(Windows: \, Linux和Max OS X: /)
linesep:行结束符(行分隔符)
sys
argv:命令行参数
path: Python中import时的搜索路径,list类型,可修改
modules:Python中已经加载了的模块,dict类型,可修改
stdin/stdout/stderr:标准 输入、(正常)输出、错误输出
platform
platform():平台
version():内核版本
architecture():CPU架构
machine():操作系统类型(I386,AMD64)。
node():本机网络名
processor():处理器信息
system():系统(Windows)
uname():汇总信息
python_version():Python版本
补充:
第三方-日期时间操作库:python-dateutil
安装:
|
pip install python-dateutil |
解析时间:
|
import dateutil.parser as dt_parser dt_str = '2018-08-09 12:23:34' dt = dt_parser.parse(dt_str) |
第三方-数据操作库:pandas
安装:
|
pip install pandas |
解析时间:
|
import pandas as pd csv_path = r'C:\User\XYZ\abc.csv' df = pd.read_csv(csv_path) |
标准库-读取json到有序字典:
|
import json from collections import OrderedDict dict_obj = json.loads(str_data, object_pairs_hook=OrderedDict) |
Json扩展应用(豆瓣标签爬虫):
|
# -*- coding: utf-8 -*- import json import requests resp = requests.get('https://movie.douban.com/j/search_tags?type=movie&source=') if resp.ok: try: data = json.loads(resp.text) except Exception as e: print(e) else: print(data) else: print('请求失败') |
bytes与str转换:
|
bytes_obj. decode(encoding='utf-8', errors='strict') |
bytes.decode()参数:
encoding:指明字节串是以哪种编码保存的。默认值为'utf-8'。
errors:如果出错了,如何处理。可能的值为'strict'(严格处理,引发异常)、'ignore'(忽略,程序继续)、'replace'(替换,程序继续)。默认值为'strict'。
str.encode(=, ='strict')
encoding:指定了转成哪种编码。默认值为'utf-8'。
errors:如果出错了,如何处理。默认值为'strict'。
chardet:第三方库,专用于编码判断,使用步骤如下:
- 以二进制方式读取文件,得到字节串
- 调用chardet.detect()方法,参数为上一步得到的字节串。
- 识别结果为字典类型,有一个名为'encoding',就是识别到的编码。但是,有可能判断失败,所以需要判断结果是否有效。
chardet示例代码
|
# -*- coding: utf-8 -*- # 模块倒入 try: import chardet except ImportError: # 如果导入第三方库出错,一般是未安装 # 调用pip安装 import os os.system('pip install chardet') # 安装完成后重新导入 import chardet # 要判断编码的内容 bys = b'hehe' # 判断编码 det = chardet.detect(bys) # 获取编码 encoding = 'None' # 可能检测失败,需要判断 if isinstance(det, dict) and 'encoding' in det: encoding = det['encoding'] # 如果获取到了编码 if bool(encoding): # TODO:得到编码后做的事,以下是示例 # 就算正确得到了编码,也要防止存在不可解码的字符 # 所以需要设置errors参数值为'ignore'或'replace',一般用前者 str_obj = bys.decode(encoding, errors='ignore') print(str_obj) # TODO: 对字符串操作 pass else: print('编码检测失败,请手动处理') |
python 常用标准库的更多相关文章
- Python常用标准库(pickle序列化和JSON序列化)
常用的标准库 序列化模块 import pickle 序列化和反序列化 把不能直接存储的数据变得可存储,这个过程叫做序列化.把文件中的数据拿出来,回复称原来的数据类型,这个过程叫做反序列化. 在文件中 ...
- python常用标准库(时间模块 time和datetime)
常用的标准库 time时间模块 import time time -- 获取本地时间戳 时间戳又被称之为是Unix时间戳,原本是在Unix系统中的计时工具. 它的含义是从1970年1月1日(UTC/G ...
- python常用标准库(os系统模块、shutil文件操作模块)
常用的标准库 系统模块 import os 系统模块用于对系统进行操作. 常用方法 os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作.文件的删除创建等详细资料可以参考官方文 ...
- python常用标准库(压缩包模块zipfile和tarfile)
常用的标准库 在我们常用的系统windows和Linux系统中有很多支持的压缩包格式,包括但不限于以下种类:rar.zip.tar,以下的标准库的作用就是用于压缩解压缩其中一些格式的压缩包. zip格 ...
- python常用标准库(math数学模块和random随机模块)
常用的标准库 数学模块 import math ceil -- 上取整 对一个数向上取整(进一法),取相邻最近的两个整数的最大值. import math res = math.ceil(4.1) p ...
- python常用标准库
-------------------系统内建函数------------------- 1.字符串 str='这是一个字符串数据测试数据'对应 str[0]:获取str字符串中下标为 ...
- Python常用标准库之datetime、random、hashlib、itertools
库:具有相关功能模块的集合 import sys.builtin_module_names #返回内建模块的名字modules 查看所有可用模块的名字 1.1.1获取当前日期和时间 from date ...
- 【循序渐进学Python】11.常用标准库
安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间.这里是一些常用标准库的简单说明.更多的标准库的说明,可以参考Python文档 sys 模块 ...
- Python的标准库介绍与常用的第三方库
Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...
随机推荐
- mongodb集群配置分片集群
测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...
- jenkins使用(ubuntu16.0环境)
本文总结了使用jenkins过程.大部分是网上链接,以后自已查看使用. ssh远程链接服务器 检查是否开启ssh ps -ef|grep ssh 1.安装ssh 2.开启root用户 3.充许ro ...
- ThreadLocal的学习
一 用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量.1.Threa ...
- 【3D美术教程】手雷(传统与PBR流程)
转自:https://www.sohu.com/a/156489635_718614 随着最新的次时代技术PBR流程的普及,越来越多的公司由传统流程转向了PBR流程,主要原因在于PBR材质不仅效果上更 ...
- [ExcelHome]VLOOKUP的别样用法
请看题: 如上图所示,是某小区多名业主的信息表.如诸君所见,A列是业主的姓名,B列是一些有趣的信息,要求在C列,使用VLOOKUP函数,提取出B列的手机号码. B列的信息真是奇葩,除了手机号码,还有职 ...
- python常见用法
1.冒泡排序 a = [25,15,47,36,44,455,67,234,7,8,-47] def sortport(): for i in range(len(a)-1): for j in ra ...
- ipv6无网络访问权限怎么办
有时IP4和IP6都正常连接,但突然又出现“IPV6无网络访问权限” 这是win7系统下经常发生的事情,如下图. 方法/步骤 1.IPV6没网络权限是正常的因为你没有IPV6的网络环境,那个只有部分教 ...
- python学习笔记_week27
search import time import random def cal_time(func): def wrapper(*args, **kwargs): t1 = time.time() ...
- Ubuntu 14.04 tomcat配置
在tomcat-users.xml中添加了以下代码即可 <role rolename="tomcat"/> <role rolename="role1& ...
- 《从零玩转python+人工智能-3》120,122节课深度优先疑问解答
深度优先(从左往右): 按照这个原则来:至于使用栈,或者队列:根据它们不同的特性:最终务必保证最终结果是原继承结构的“从左往右”:所以,如果是栈,就是右侧先入栈,左侧再入(这样左侧能先出来,遵循从左 ...