pthon学习笔记五常用库-time,os,sys,json
1.time库
在Python中包含了若干个能够处理时间的库,而time库是最基本的一个,是Python中处理时间的标准库。time库能够表达计算机时间,提供获取系统时间并格式化输出的方法,提供系统级精确计时功能(可以用于程序性能分析)。
time库包含三类函数,以下介绍常用的函数:
时间获取:time()、ctime()、gmtime()
时间格式化:strftime()、strptime()
程序计时:sleep()、perf_counter()
获取时间:
time()-------获取当前时间戳,浮点数形式
import time as t #获取时间戳 print int(t.time()) #获取当前时间 print t.localtime(t.time()) printt.strftime('%y-%m-%d %H:%M%S',t.localtime) #格式化时间戳
ctime()-------以可读的方式返回字符串时间
gmtime()-------计算机可以处理的时间格式
时间格式化:将时间以合适方式展示出来的方法,类似于字符串的格式化,展示模板由特定格式化控制符组成。
strftime(tpl,ts):tpl是格式化模板字符串,用来定义输出效果;ts是系统内部时间类型变量。
>>> time.strftime("%Y-%m-%d %H:%M:%S",t) '2020-03-16 07:22:52'
strptime(str,tpl):str是字符串形式的时间值;tpl是格式化模板字符串,用来定义输入效果。
>>> import time
>>> timeStr='2018-01-26 12:55:20'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=55, tm_sec=20, tm_wday=4, tm_yday=26, tm_isdst=
格式化字符串 | 日期/时间说明 | 取值范围 |
%Y | 年份 | 0000~9999 |
%m | 月份(数字) | 01~12 |
%B | 月份(英文全称) | January~December |
%b | 月份(英文缩写) | Jan~Dec |
%d | 日期 | 01~31 |
%A | 星期(英文全称) | Monday~Sunday |
%a | 星期(英文缩写) | Mon~Sun |
%H | 小时(24小时制) | 00~23 |
%I | 小时(12小时制) | 01~12 |
%p | 上/下午 | AM,PM |
%M | 分钟 | 00~59 |
%S | 秒 | 00~59 |
程序计时:指测量起止动作所经历时间的过程,主要包括测量时间和产生时间两部分。time库提供了一个非常精准的测量时间函数perf_counter(),该函数可以获取CPU以其频率运行的时钟,这个时间往往是以纳秒来计算的,所以这样获取的时间非常精准。另外产生时间函数sleep(),它可以让程序休眠或产生一段时间。
perf_counter():返回一个CPU级别的精确时间计数值,单位为秒。由于这个计数值起点不确定,连续调用求差值才有意义。例如:
>>> import time >>> startTime=time.perf_counter() >>> print(startTime) 9.621589306950508e-07 >>> endTime=time.perf_counter() >>> print(endTime) 41.478044816080114 >>> endTime-startTime 41.478043853921186
sleep(s):s为休眠时间,单位秒,可以是浮点数。
>>> import time >>> def wait(): time.sleep(3.3) >>> wait() #程序会等待3.3秒才输出
2.os库
os库基本介绍
os库提供通用的,基本的操作系统交互功能(windows,mac os,linux)
-os库是python标准库,包含几百个函数
-与操作系统相关的,包括常用路径操作,进程管理,环境参数等
其中:
-路径操作:os.path子库,处理文件路径及信息
-进程管理:启动系统中其他程序
-环境参数:获得系统软硬件信息等环境参数
一.路径操作
os.path子库以path为入口,用于操作和处理文件路径;这里的path指的是目录或者包含文件名称的文件路径。
import os.path
import os.path as op
1. os.path.abspath(path) 返回path在当前系统中的绝对路径
2.os.path.normpath(path) 归一化path的表示形式,统一用\\分割路径
>>>os.path.normpath("D://PYE//file.txt") 'D:\\PYE\\file\\file.txxt'
3.os.path.relpath(path)返回当前程序与文件之间的相对路径(relative path)
4.os.path.dirname(path) 返回path中的目录名称
5.os.path.basename(path)返回path中最后的文件名称
6.os.path.join(path,*paths) 组合path与paths,返回一个路径字符串
7.os.path.exists(path) 判断path对应文件或目录是否存在,返回True或False
8.os.path.isfile(path) 判断path所对应是否为已存在的文件,返回True或False
9.os.path.isdir(path)判断path所对应是否为已经存在的目录,返回True或False
10.os.path.getatime(path) 返回path对应文件或者目录上一次的访问时间
11.os.path.getatime(path) 返回path对应文件或者目录上一次的访问时间(access)
12.os.path.getmtime(path)返回path对应文件或者目录最近一次的修改时间(modify)
13.os.path.getctime(path)返回path对应文件或者目录的创建时间(create)
14.os.path.getsize(path) 返回path对应文件的大小,以字节为单位
二.进程管理
1.os.system(command)
-执行程序或者命令conmmand
-在windows系统中,返回值为cmd的调用返回信息
三.环境参数
1.os.chdir(path) 修改当前程序操作的路径
2.os.getcwd()返回程序的当前路径
3.os.getlogin() 获得当前系统的登陆用户名称
4.os.cpu_count() 会的当前系统的cpu数量
5.os.urandom(n)获得n个字节长度的随机字符串,通常用于加解密算法
实例:
import os #创建一个文件夹mkdir os.mkdir('c:/log') #删除文件夹 os.rkdir('c:/log') #改文件夹或目录名 os.rename('c:/log','c:/newlog') #对目录的处理 print ‘当前文件的目录:’,os.path.dirname(__file__) print ‘当前文件的上级录:’,os.path.dirname(os.path.dirname(__file__))
#os.path.join(path,*paths) 组合path与paths,返回一个路径字符串,实现对day3下的login文件的读取。(day3在ununun的下级目录) base_die=os.path.dirname(os.path.dirname(__file__)) #获取到目录D:/git/python/ununun f=open(os.path.join(base_dir,'day/login'),'r') print f.read()
3.sys库
主要是针对与Python解释器相关的变量和方法,不是主机操作系统。
1 sys.argv #获取命令行参数列表,第一个元素是程序本身,从第二个元素开始才是真正的参数 2 sys.exit(n) #退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常 3 sys.version #获取Python解释程器的版本信息 4 sys.maxsize #最大的Int值,64位平台是2**63 - 1 5 sys.path #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值,第一个元素通常是个空字符串,表示当前目录。sys.path本质上是一个列表,可以进行append、insert、pop、remove等各种列表相关的操作,但通常都进行append操作,添加自己想要的查找路径。 6 sys.platform #返回操作系统平台名称 7 sys.stdin #输入相关,用于所有的交互式输入(包括input()函数) 8 sys.stdout #输出相关,用于print()的打印输出或者input()函数的提示符。 9 sys.stderr #错误相关,用于解释器自己的提示信息和错误信息。 10 sys.exc_info() #返回异常信息三元元组 11 sys.getdefaultencoding() #获取系统当前编码,默认为utf-8 12 sys.setdefaultencoding() #设置系统的默认编码 13 sys.getfilesystemencoding() #获取文件系统使用编码方式,默认是utf-8 14 sys.modules #以字典的形式返回所有当前Python环境中已经导入的模块 15 sys.builtin_module_names #返回一个列表,包含所有已经编译到Python解释器里的模块的名字 16 sys.copyright #当前Python的版权信息 17 sys.flags #命令行标识状态信息列表。只读。 18 sys.getrefcount(object) #返回对象的引用数量 19 sys.getrecursionlimit() #返回Python最大递归深度,默认1000 20 sys.getsizeof(object[, default]) #返回对象的大小 21 sys.getswitchinterval() #返回线程切换时间间隔,默认0.005秒 22 sys.setswitchinterval(interval) #设置线程切换的时间间隔,单位秒 23 sys.getwindowsversion() #返回当前windwos系统的版本信息 24 sys.hash_info #返回Python默认的哈希方法的参数 25 sys.implementation #当前正在运行的Python解释器的具体实现,比如CPython 26 sys.thread_info #当前线程信息
4.json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
使用 JSON 函数需要导入 json 库:import json。
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串(str) |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
json.dumps:用于将 Python 对象编码成 JSON 字符串。
语法:
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
列表序列化实例:
#!/usr/bin/python import json data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data2 = json.dumps(data) print(data2) #输出: [{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
使用参数让 JSON 数据格式化输出:
#!/usr/bin/python import json data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] data2 = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')) print(data2) #输出 { "a": "Runoob", "b": 7 }
python 原始类型向 json 类型的转化对照表:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json.loads:用于解码 JSON 数据。该函数返回 Python 字段的数据类型。
语法:
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
实例:
#!/usr/bin/python import json jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = json.loads(jsonData) print(text) #输出 {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
json 类型转换到 python 的类型对照表:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
第三方库:Demjson
函数 | 描述 |
---|---|
encode | 将 Python 对象编码成 JSON 字符串 |
decode | 将已编码的 JSON 字符串解码为 Python 对象 |
Python encode() 函数用于将 Python 对象编码成 JSON 字符串。
#!/usr/bin/python import demjson data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = demjson.encode(data) print(json) #输出 [{"a":1,"b":2,"c":3,"d":4,"e":5}]
Python 可以使用 demjson.decode() 函数解码 JSON 数据。该函数返回 Python 字段的数据类型。
#!/usr/bin/python import demjson json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = demjson.decode(json) print(text) #输出 {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
- 文件的序列化与反序列化
import json import requests #发送请求,返回值赋给r r=requests.get(url='http://10.1.30.101:20100/freezing/monitor/livemonitoring/selectEmergencySeverityStatistics?query_time_type=2&anti_cache=1609920966757')
#print r.content.decode('utf-8') #以utf-8编码格式对返回内容进行解码,把json格式转化成python数据类型
#对文件进行序列化-->就是把服务端的响应数据写到文件中
json.dumps(r.content,open('weather.json','w'))
#对文件进行反序列化-->就是读取文件的内容。
#文件反序列化后类型是unicode类型
dict1=(json.load(open('weather.json','r'))).encode('utf-8') #对内容进行编码,成字符串类型
dict2=json.loads(dict1) #对字符串类型进行编码,成字典类型
print dict1,type(dict1) #输出读取的内容,内容的数据类型
print dict2.[data].[0] #取出内容里的data下的第0个数据