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 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...
随机推荐
- Nginx 开启目录浏览功能配置
在server节点下添加 server { listen ; server_name default; #index index.php; # 目录浏览功能 autoindex on; # 显示文件大 ...
- html 手机端click 事件延迟问题(fastclick.js使用方法)
下载地址: fastclick.js 为什么存在延迟? 从点击屏幕上的元素到触发元素的 click 事件,移动浏览器会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击 ...
- C/C++程序员应聘常见面试题深入剖析(2)
摘自:http://blog.csdn.net/zhoudengqing 3.内功题 试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 解答: ...
- JS的文本框验证以及form表单的提交阻止
js: 1.只能输入数字 只能输入数字:<input type="text" onkeyup="javascript:ReNumber(this)" /& ...
- 移动端REM布局模板(阿里高清方案)
移动端REM布局模板(阿里高清方案),蛮好的,转自: http://www.jianshu.com/p/985d26b40199 . <!DOCTYPE html> <html la ...
- 海康威视采集卡结合opencv使用(两种方法)-转
(注:第一种方法是我的原创 ^_^. 第二种方法是从网上学习的.) 第一种方法:利用 板卡的API: GetJpegImage 得到 Jpeg 格式的图像数据,然后用opencv里的一个函数进行解码 ...
- uvm_factory——我们的工厂(一)
factory 机制是实现(功能):通过一个字符串来创建此字符串所代表的的类的一个实例. //----------------------------------------------------- ...
- WebStorm 配置less
1.打开Webstorm的Setting 搜索,watch 找到 File watch,点击右侧加号添加Less. 2.配置, working directory. Output paths
- jni 开发
创建android工程 -> 添加native 函数 添加库之后: 1. 用javah 生成c语言.h头文件时, 在cmd 窗口中cd 到bin/classes 目录下执行下代码无效: java ...
- ucosii(2.89)mbox 应用要点
OSMboxCreate(void *msg) 当创建一个mbox时候,消息邮箱允许(任务或者中断)向其他一个或者几个任务发送消息.初始化msg指向消息邮箱中的消息. void*OSMboxP ...