python基础——13(系统、时间、序列化模块)
一、时间模块
1、标准库time
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(0000-9999)
%m 月份(01-12)
%d 月中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
print(time.time()) # 获取时间戳,可以作为数据的唯一标识,当前时间-1970年1月1日00:00:00的时间
print(time.localtime()) #元组表示,时间戳转换为本地时间,当前时区时间:东八区(上海时区)
print(time.localtime(12345666)) #参数12345666单位是秒,从1970开始加这个参数的时间
time.sleep(1) #延迟几秒
print(time.gmtime()) #时间戳转换为utc标准时间,比中国时间晚8h,元组表示
print(time.gmtime(12345666)) #参数12345666单位是秒,从1970开始加这个参数的utc标准时间
应用场景:通过时间戳,获得该时间戳能反映的年月日等信息
# 5656565656是哪一年
print(time.localtime(5656565656).tm_year)
x=time.localtime()
y=time.time()
print(x)
print(x.tm_year) #取元组的元素
print(time.mktime(x)) #把元组表示的形式转换成时间戳,单位是秒
# strftime("格式",struct_time) -->>输出格式化的字符串
# strptime("格式化的字符串","格式") -->>输出struct_time
print(time.strftime('%Y-%m-%d %H:%M:%S',x)) #定义时间格式,把元组转换成格式化的字符串
print(time.strptime('2018-11-09 16:38:20','%Y-%m-%d %H:%M:%S'))
print(time.asctime(x)) #接收的参数是元组。以固定格式Fri Nov 9 16:53:51 2018将元组转换成格式化时间字符串
print(time.ctime(y)) #接收的参数是时间戳。也是固定格式输出Fri Nov 9 16:56:56 2018
# 需求:输入一个年份,判断其是否是闰年
# 1.能被400整除 year % 400 == 0
# 2.能被4整除不能被100整除 year % 4 == 0 and year % 100 != 0
year = int(input('year: '))
b1 = year % 400 == 0
b2 = year % 4 == 0 and year % 100 != 0
if b1 or b2:
print("是闰年")
else:
print("不是闰年")
2、日历模块
判断闰年:calendar.isleap(year)
查看某年某月日历:calendar.month(year, month)
查看某年某月起始星期与当月天数:calendar.monthrange(year, month)
查看某年某月某日是星期几:calendar.weekday(year, month, day)
import calendar
print(calendar.isleap(2019))
print(calendar.month(2019, 4))
print(calendar.monthrange(2019, 4))
print(calendar.weekday(2018, 8, 8))
3、标准库datetime
当前时间:datetime.datetime.now()
昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
修改时间:datatime_obj.replace([...])
格式化时间戳:datetime.date.fromtimestamp(timestamp)
import datetime
print(datetime.datetime.now()) #获取当前时间
print(datetime.datetime.now()+datetime.timedelta(3)) #3天后的时间
print(datetime.datetime.now()+datetime.timedelta(-3)) #3天前时间
print(datetime.datetime.now()+datetime.timedelta(hours=3)) #3h后的时间
print(datetime.datetime.now()+datetime.timedelta(hours=-3)) #3h前的时间
print(datetime.datetime.now()+datetime.timedelta(minutes=30)) #30分钟后的时间
二、系统模块
1、sys模块
import sys
sys.argv #传参
sys.exit(0) #退出
sys.version #获取python解释程序的版本信息
print(sys.maxsize) #最大支持的长度
print(sys.path) #返回模块的搜索路径,初始化时使用python环境变量的值
print(sys.platform) #返回操作系统平台名称
sys.stdout.write('please:')
2、os模块
生成单级目录:os.mkdir('dirname')
生成多层目录:os.makedirs('dirname1/.../dirname2')
重命名:os.rename("oldname","newname")
工作目录:os.getcwd()
删除单层空目录:os.rmdir('dirname')
移除多层空目录:os.removedirs('dirname1/.../dirnamen')
列举目录下所有资源:os.listdir('dirname')
路径分隔符:os.sep
行终止符:os.linesep
文件分隔符:os.pathsep
操作系统名:os.name
操作系统环境变量:os.environ
执行shell脚本:os.system()
import os
print(os.getcwd()) # 获取当前工作目录
os.chdir("E:\\python") # 或者 os.chdir(r"E:\python"),切换目录
print(os.curdir) # 返回‘.’,表示当前目录
print(os.pardir) # 返回‘..’,表示上级目录
os.makedirs(r"E:\python\day2\ddd\sss") # 递归创建目录
os.removedirs(r"E:\python\day2\ddd\sss") # 递归删除空目录
os.mkdir() #生成单级目录
os.rmdir() #删除单级空目录
print(os.listdir('..')) #以列表形式列出目录下的子目录及文件,隐藏文件
os.remove() #删除文件
os.rename('old','new') #重命名文件、目录,renames更强大
print(os.stat("E:\\python\day2\os模块.py")) #获取文件、目录信息
print(os.sep) #输出系统路径的分隔符\
os.linesep #换行符(windows是\r\n)
print(os.pathsep) #输出用于分割文件路径的字符串,windows是;,linux是:
print(os.environ) #输出系统的环境变量
print(os.name) #系统名,nt代表windows
os.system('ipconfig') #执行命令
# os.path
执行文件的当前路径:__file__
返回path规范化的绝对路径:os.path.abspath(path)
将path分割成目录和文件名二元组返回:os.path.split(path)
上一级目录:os.path.dirname(path)
最后一级名称:os.path.basename(path)
指定路径是否存在:os.path.exists(path)
是否是绝对路径:os.path.isabs(path)
是否是文件:os.path.isfile(path)
是否是路径:os.path.isdir(path)
路径拼接:os.path.join(path1[, path2[, ...]])
最后存取时间:os.path.getatime(path)
最后修改时间:os.path.getmtime(path)
目标大小:os.path.getsize(path)
print(os.path.abspath(__file__)) #当前文件路径
print(os.path.split('E:\\python\day2\os模块.py')) #返回('E:\\python\\day2', 'os模块.py'),输入的路径不需要一定存在
# ('D:\\fullstack_s4\\day17\\代码\\part1', '系统模块.py')
print(os.path.split(r'D:\fullstack_s4\day17\代码\part1\系统模块.py'))
# ('D:/fullstack_s4/day17/代码/part1', '系统模块.py')
print(os.path.split(r'D:/fullstack_s4/day17/代码/part1/系统模块.py'))
# ('D:/fullstack_s4/day17/代码', 'part1')
print(os.path.split(r'D:\fullstack_s4\day17\代码\part1'))
# ('D:\\fullstack_s4\\day17\\代码/part1', '')
print(os.path.split(r'D:\fullstack_s4\day17\代码\part1\\'))
print(os.path.dirname(r"E:\a\b\c\d.txt")) #返回path的目录,输出E:\a\b\c,输入的路径不需要一定存在
print(os.path.basename(r"E:\a\b\c\d.txt")) #输出d.txt,输入的路径不需要一定存在
print(os.path.exists(r"E:\a\b\c\d.txt")) #False,判断输入的路径是否存在
print(os.path.isabs(r"E:\a")) #判断是否为绝对路径
print(os.path.isfile(r"E:")) #False,判断是否是文件
print(os.path.isdir(r"E:")) #True,判断是否是目录
print(os.path.join('E:\\','\python','day2',"os模块.py")) #输出E:\python\day2\os模块.py,
# 用于把一个文件路径的字符串连接起来,形成这个文件的完整的路径。
import time
# 获取所指向文件的最后访问时间
print(os.path.getatime('E:\\python\day2\os模块.py'))
#获取文件的创建时间
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(os.path.getctime('E:\\python\day2\os模块.py'))))
#获取文件的最后修改时间
print(time.ctime(os.path.getmtime('E:\\python\day2\os模块.py')))
# 先将项目的根目录设置为常量 -> 项目中的所有目录与文件都应该参照此目录进行导包
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
print(BASE_PATH) # G:/脱产7期
sys.path.append(BASE_PATH)
# 重点:将项目目录添加至环境变量
# 拼接项目中某一文件或文件夹的绝对路径
file_path = os.path.join(BASE_PATH,'day17','时间模块.py')
print(file_path) # G:/脱产7期\day17\时间模块.py
print(os.path.exists(file_path)) # True
# 辅助上传下载进度
print(os.path.getsize(r'G:/脱产7期\day17\时间模块.py'))
# 通过normcase把字符串标准化
print(os.path.normcase('c:/windows\\system32\\')) # c:\windows\system32\
# 通过normpath来添加项目根目录到环境变量
BASE_PATH1 = os.path.normpath(os.path.join(__file__,'..','..'))
print(BASE_PATH1) # G:\脱产7期
sys.path.append(BASE_PATH1)
3、案例:递归遍历
import os
# 遍历对应目录下的文件
def ls(path,files=[]):
if not os.path.exists(path):
return []
if os.path.isfile(path):
return [path]
# 只能是文件夹,列出文件夹下的所有文件
file_list = os.listdir(path)
for v in file_list:
file_path = os.path.join(path,v)
if os.path.isfile(file_path):
if file_path.endswith('.py'): # 将.py结尾的文件加入列表
files.append(file_path)
else:
ls(file_path)
return files
res = ls(r'G:\脱产7期\day17')
print(res)
三、序列化
1、pickle
import pickle
# 可以将任意类型对象与字符串进行转换
dic = {
'a': 1,
'b': [1, 2, 3, 4, 5]
}
# pickle序列化是以二进制存取
res = pickle.dumps(dic)
print(res)
# b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02]q\x03(K\x01K\x02K\x03K\x04K\x05eu.'
# 反序列化
print(pickle.loads(res),type(res)) # {'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'bytes'>
# pickle序列化到文件中
with open('2.txt','wb') as w:
pickle.dump(dic,w)
# 从文件中反序列化
with open('2.txt','rb') as r:
s = pickle.load(r)
print(s,type(s)) # {'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'dict'>
2、json
# 把对象(变量)从内存中变成可存储或传输的过程称之为序列化
# 为什么要序列化?
# 1、持久保存状态
# 2、跨平台数据传输
import json
# 将json类型的对象与json类型的字符串相互转换
# { }与[ ]嵌套形成的数据(python中建议数据从{ }开始)
dic = {'a':1,'b':[1,2,3,4,5]}
# 序列化:将python字典转换为字符串传递给其他语言或保存
json_str = json.dumps(dic)
print(json_str,type(json_str)) # {"a": 1, "b": [1, 2, 3, 4, 5]} <class 'str'>
# 反序列化:将json字符串转回字典
new_dic = json.loads(json_str) # json类型的字符串内部不能出现单引号''
print(new_dic,type(new_dic)) # {'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'dict'>
# 序列化文件存储
with open('1.txt','w',encoding='utf-8') as w:
json.dump(dic,w) # # 先将dic对象转化为字符串,再写入文件
# 读文件
with open('1.txt','r',encoding='utf-8') as r:
res = json.load(r)
print(res,type(res)) # {'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'dict'>
四、随机数random
(0, 1):random.random()
[1, 10]:random.randint(1, 10)
[1, 10):random.randrange(1, 10)
(1, 10):random.uniform(1, 10)
单例集合随机选择1个:random.choice(item)
单例集合随机选择n个:random.sample(item, n)
洗牌单列集合:random.shuffle(item)
python基础——13(系统、时间、序列化模块)的更多相关文章
- 【转】Python之日期与时间处理模块(date和datetime)
[转]Python之日期与时间处理模块(date和datetime) 本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常 ...
- 十三. Python基础(13)--生成器进阶
十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...
- Python获取当前系统时间
Python获取当前系统时间 import time #返回当前时间 def GetNowTime(): return time.strftime("%Y-%m-%d %H:%M:% ...
- Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块
5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...
- Python基础系列讲解——时间模块详解大全之time模块
Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以tim ...
- python基础13 ---函数模块3(正则表达式)
正则表达式 一.正则表达式的本质 1.正则表达式的本质(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的 ...
- Python基础(十)re模块
Python基础阶段快到一段落,下面会陆续来介绍python面向对象的编程,今天主要是补充几个知识点,下面开始今天的内容. 一.反射 反射的作用就是列出对象的所有属性和方法,反射就是告诉我们,这个对象 ...
- Python基础语法 系统学习
Python 中的基础语法最大的特点就是优雅和简洁.入门学习Python的难度相比较其他语言也比较小. 我个人比较推荐以下三个学习方式(根据个人情况和喜好,可选择任意一个): 1. 菜鸟在线:出品的 ...
- Python基础笔记系列十:模块
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 模块 #1.类比于java中的jar包,模块能让你能够有逻辑地组织你的Py ...
- python基础之正则表达式和re模块
正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
随机推荐
- (洛谷P2512||bzoj1045) [HAOI2008]糖果传递 || 洛谷P4016 负载平衡问题 || UVA11300 Spreading the Wealth || (洛谷P3156||bzoj3293) [CQOI2011]分金币
bzoj1045 洛谷P4016 洛谷P2512 bzoj3293 洛谷P3156 题解:https://www.luogu.org/blog/LittleRewriter/solution-p251 ...
- nginx之location简单匹配总结
location匹配规则与优先级 = 精确匹配,匹配成功则停止匹配 ^~ 前缀普通字符匹配,匹配成功则停止匹配 ~ 正则匹配,区分大小写:多个正则按顺序匹配 ~* 正则匹配,不区分大小写:多个 ...
- vue项目打包后文本溢出代码消失问题
补充 https://www.cnblogs.com/richard1015/p/8526988.html vue webpack 打包编译-webkit-box-orient: vertical 后 ...
- JavaScript Allongé 第一呷 :基础函数 (1)
第一呷 :基础函数 关于函数,尽管少,但毫不逊色. 在javascript中,函数是值,但它们不仅仅是简单的数值,字符串,或者甚至复杂的数据结构树或者地图.函数表示要执行的运算.就像数值.字符串和数组 ...
- POJ 1458 Common Subsequence DP
http://poj.org/problem?id=1458 用dp[i][j]表示处理到第1个字符的第i个,第二个字符的第j个时的最长LCS. 1.如果str[i] == sub[j],那么LCS长 ...
- compare `lvs/haproxy/nginx`
特性 LVS Nginx Haproxy 工作层 四层(传输层TCP/UDP) 七层(应用层) 四层.七层 应用范围 基于TCP和UDP之上的协议都可以 Http.mail HTTP.TCP之上应用 ...
- thinkPHP--模块分组
启用分组模块非常简单,配置下APP_GROUP_LIST参数和DEFAULT_GROUP参数即可. 'APP_GROUP_LIST'=>'Admin,Home', 'DEFAULT_GROUP' ...
- java isAssignableFrom instanceof 小结 专题
一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. public native boolean isAssignabl ...
- aspx页面调用webapi接口报错:远程服务器返回错误:(500)内部服务器错误
代码在运行到response = (HttpWebResponse)request.GetResponse();就开始报错 原因:可能因为所调用的接口不存在或者接口中存在错误,可用postman测试接 ...
- 保存 http request 的数据到数据库表
开发需求:把 http request 对象的数据保存到数据库中 第一步:编写 RequestInfoService 类,保存方法名是 saveRequestInfo // 保存request信息 p ...