一、时间模块

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(系统、时间、序列化模块)的更多相关文章

  1. 【转】Python之日期与时间处理模块(date和datetime)

    [转]Python之日期与时间处理模块(date和datetime) 本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常 ...

  2. 十三. Python基础(13)--生成器进阶

    十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...

  3. Python获取当前系统时间

    Python获取当前系统时间 import time #返回当前时间 def GetNowTime():     return time.strftime("%Y-%m-%d %H:%M:% ...

  4. Python基础(12)_python模块之sys模块、logging模块、序列化json模块、pickle模块、shelve模块

    5.sys模块 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 ...

  5. Python基础系列讲解——时间模块详解大全之time模块

    Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以tim ...

  6. python基础13 ---函数模块3(正则表达式)

    正则表达式 一.正则表达式的本质 1.正则表达式的本质(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的 ...

  7. Python基础(十)re模块

    Python基础阶段快到一段落,下面会陆续来介绍python面向对象的编程,今天主要是补充几个知识点,下面开始今天的内容. 一.反射 反射的作用就是列出对象的所有属性和方法,反射就是告诉我们,这个对象 ...

  8. Python基础语法 系统学习

    Python 中的基础语法最大的特点就是优雅和简洁.入门学习Python的难度相比较其他语言也比较小. 我个人比较推荐以下三个学习方式(根据个人情况和喜好,可选择任意一个): 1.  菜鸟在线:出品的 ...

  9. Python基础笔记系列十:模块

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 模块 #1.类比于java中的jar包,模块能让你能够有逻辑地组织你的Py ...

  10. python基础之正则表达式和re模块

    正则表达式 就其本质而言,正则表达式(或 re)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 ...

随机推荐

  1. (洛谷P2512||bzoj1045) [HAOI2008]糖果传递 || 洛谷P4016 负载平衡问题 || UVA11300 Spreading the Wealth || (洛谷P3156||bzoj3293) [CQOI2011]分金币

    bzoj1045 洛谷P4016 洛谷P2512 bzoj3293 洛谷P3156 题解:https://www.luogu.org/blog/LittleRewriter/solution-p251 ...

  2. nginx之location简单匹配总结

    location匹配规则与优先级 = 精确匹配,匹配成功则停止匹配 ^~   前缀普通字符匹配,匹配成功则停止匹配 ~ 正则匹配,区分大小写:多个正则按顺序匹配 ~*   正则匹配,不区分大小写:多个 ...

  3. vue项目打包后文本溢出代码消失问题

    补充 https://www.cnblogs.com/richard1015/p/8526988.html vue webpack 打包编译-webkit-box-orient: vertical 后 ...

  4. JavaScript Allongé 第一呷 :基础函数 (1)

    第一呷 :基础函数 关于函数,尽管少,但毫不逊色. 在javascript中,函数是值,但它们不仅仅是简单的数值,字符串,或者甚至复杂的数据结构树或者地图.函数表示要执行的运算.就像数值.字符串和数组 ...

  5. POJ 1458 Common Subsequence DP

    http://poj.org/problem?id=1458 用dp[i][j]表示处理到第1个字符的第i个,第二个字符的第j个时的最长LCS. 1.如果str[i] == sub[j],那么LCS长 ...

  6. compare `lvs/haproxy/nginx`

    特性 LVS Nginx Haproxy 工作层 四层(传输层TCP/UDP) 七层(应用层) 四层.七层 应用范围 基于TCP和UDP之上的协议都可以 Http.mail HTTP.TCP之上应用 ...

  7. thinkPHP--模块分组

    启用分组模块非常简单,配置下APP_GROUP_LIST参数和DEFAULT_GROUP参数即可. 'APP_GROUP_LIST'=>'Admin,Home', 'DEFAULT_GROUP' ...

  8. java isAssignableFrom instanceof 小结 专题

    一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. public native boolean isAssignabl ...

  9. aspx页面调用webapi接口报错:远程服务器返回错误:(500)内部服务器错误

    代码在运行到response = (HttpWebResponse)request.GetResponse();就开始报错 原因:可能因为所调用的接口不存在或者接口中存在错误,可用postman测试接 ...

  10. 保存 http request 的数据到数据库表

    开发需求:把 http request 对象的数据保存到数据库中 第一步:编写 RequestInfoService 类,保存方法名是 saveRequestInfo // 保存request信息 p ...