Day 24
今日内容概要
- 时间模块之datetime模块
- os模块
- sys模块
- json模块
今日内容详细
#py文件名称尽量不要与模块名(内置、第三方)冲突
1.datetime模块
1.
import datetime
res=datetime.datetime.today()#获取年月日时分秒(秒很精确)
print(res)#2022-07-15 15:38:47.867384
res1=datetime.date.today()#获取年月日
'还可以通过点的方式点出来想要的日期如:'
print(res1)#2022-07-15
print(res.year)#年
print(res.month)#月
print(res1.isoweekday())#星期几
'''
date 年月日
datetime 年月日时分秒
'''
2.
tl = datetime.timedelta(days=3)#定义一个时间差值
print(res1 + tl) # 2022-07-18
print(res1 - tl) # 2022-07-12
'''
括号内可以添加很多参数 没有的时间可以换算得到
'''
2.os模块
os模块主要是跟当前程序所在的操作系统打交道
import os
1.创建目录
os.mkdir(r'aaa')#创建单级目录(创建在当前执行执行文件所在的路径下)
os.makedirs(r'bbb/ccc/ddd')#可以创建单级与多级目录
2.删除目录
os.rmdir(r'aaa')#可以删除单级目录(目录下不能有任何东西,仅能删空白文件夹)
os.removedirs(r'bbb/ccc/ddd')#可以删除多级目录(目录内不能有任何东西,从内到外删除直到某个目录内有其他数据为止)
3.列举指定路径下的文件名称(包含文件、目录)
print(os.listdir())#列举当前执行文件所在路径下所有文件夹、文件名称,结果是列表
print(os.listdir(r'D://'))#把D盘所有文件名字列举出来
4.重命名文件,删除文件
os.rename(r'a.txt',r'aaa.txt')#把a.txt重命名为aaa.txt
os.remove(r'a.txt')#删除该文件
5.获取当前工作路径(当前所在的绝对路径)#结果与下面dirname一样,下面的更常用
print(os.getcwd())#D:/pythonProject/day20
os.chdir(r'..')#上一层路径 切换路径
print(os.getcwd())#D:/pythonProject
6.与程序启动文件相关
#获取当前文件所在的绝对路径(可以不记)
print(os.path.abspath(__file__))#D:/pythonProject/day20/lx1.py
#获取当前执行文件所在的路径(必须记).
print(os.path.dirname(__file__))#D:/pythonProject/day20
#且可支持嵌套(往上一层)如day23的解决办法1
res=os.path.dirname(os.path.dirname(__file__))#D:/pythonProject赋值给res
sys.path.append(res)#把该目录文件添加到sys.path模块查询路径列表中,这样无论把该目录放在哪个位置都可以运行
7.判断路径(文件、目录)是否存在
print(os.path.exists(r'bbb'))#True
print(os.path.exists(r'sdfafdaf'))#False
isdir:只用于判断路径是否是目录(文件夹)
print(os.path.isdir(r'ccc'))#True
print(os.path.isdir(r'lx1.py'))#False
isfile:只用于判断路径是否是文件
print(os.path.isfile(r'ccc'))#False
print(os.path.isfile(r'lx1.py'))#True
8.拼接路径 join
eg:在以下路径中把a.txt拼接进去
#涉及到路径拼接,不要使用加号,应该用os模块中的join方法
absolute_path=r'D:/pythonProject/day20/ccc/ddd/eee'
relative_path='a.txt'
res=os.path.join(absolute_path,relative_path)
print(res)#D:/pythonProject/day20/ccc/ddd/eee/a.txt
# ps:join方法可以自动识别当前的操作系统并自动转换分隔符 windows用/ mac用/
9.获取文件大小 单位是字节bytes
print(os.path.getsize(r'lx1.py')) #844
3.sys模块
sys模块主要是跟python解释器打交道
import sys
print(sys.path)#当前执行文件所在的系统变量 结果是列表
print(sys.version)#获取当前解释器版本信息
print(sys.platform)#查看当前平台
______________________________________________________
res = sys.argv
'需求:只能用命令行执行当前文件且必须提供用户名和密码 否则不执行'
if len(res) == 3:
name = res[1]
pwd = res[2]
if name == 'jason' and pwd == '123':
print('正在执行该文件')
else:
print('用户名或密码错误')
else:
print('需填写用户名和密码')
# 上述校验也可以使用异常捕获实现 python解释器下方点击Terminal就可以和cmd一样
4.json模块
json模块也叫序列化模块,是不同编程语言之间数据交互必备的模块(处理措施)
#不同编程语言之间数据类型存在差异,无法直接交互
json格式的数据是什么?
数据基于网络传输肯定是二进制 那么在python中只有字符串可以调用encode(编码)方法转换成二进制数据 所以json格式的数据也属于字符串
json格式的数据有一个非常明显的特征
1.肯定是字符串 2.引号是标志性的双引号
d = {'name':'jason','pwd':123}
import json
res=json.dumps(d)#序列化 将其他数据类型转换成json格式字符串
print(res,type(res))#{"name": "jason", "pwd": 123} <class 'str'>
res1=json.loads(res)#反序列化 将json格式字符串转换成对应编程语言的数据类型(自动识别编程语言转换)
print(res1,type(res1))#{'name': 'jason', 'pwd': 123} <class 'dict'>
——————————————————————————————————————————————————————————————————————
eg:
错误示范
#需求:将字典保存到文件中,并且将来读取出来后还是字典
d = {'name':'jason','pwd':123}
with open(r'b.txt','w',encoding='utf8')as f:
f.write(str(d))
with open(r'b.txt','r',encoding='utf8')as f:
data=f.read()
print(data,type(data))#{'name': 'jason', 'pwd': 123} <class 'str'>
——————————————————————————————————————————————————————————————————————
#上述方法写入读取后字典变成了字符串,所以需要用json模块
正确示范
d = {'name':'jason','pwd':123}
import json
with open(r'b.txt','w',encoding='utf8')as f:
'''f.write(json.dumps(d))
'''json.dump(d,f)#jason自动帮我们写入完成转换(快捷方式)
with open(r'b.txt','r',encoding='utf8')as f:
'''data=f.read()
res=json.loads(data)
'''res=json.load(f)#jason自动帮我们转换回来(快捷方式)
print(res,type(res))#{'name': 'jason', 'pwd': 123} <class 'dict'>
'''
dumps() 将其他数据类型转换成json格式字符串
loads() 将json格式字符串转换成对应的数据类型
dump() 将其他数据类型直接以json格式字符串写入文件
load() 将文件中json格式字符串读取出来并转换成对应的数据类型
'''
作业:
整理今日内容及博客 周日下午或晚上记得完成周总结!!!
1.编写一个统计指定文件类型的脚本工具
输入指定类型的文件后缀
eg:.txt
并给出一个具体路径 之后统计该类型文件在该文件下的个数
ps:简单实现即可 无需优化
2.针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便
3.编程小练习
有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
4.周末大作业(尝试编写)
# 项目功能
1.用户注册
2.用户登录
3.添加购物车
4.结算购物车
# 项目说明
用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件
数据格式 {"name":"jason","pwd":123}
# ps:文件名可以直接用用户名便于校验
用户注册时给每个用户添加两个默认的键值对(账户余额 购物车)
{"balance":15000,"shop_car":{}}
添加购物车功能 商品列表可以自定义或者采用下列格式
good_list = [
['挂壁面',3]
['印度飞饼', 22]
['极品木瓜', 666],
['土耳其土豆', 999],
['伊拉克拌面', 1000],
['董卓戏张飞公仔', 2000],
['仿真玩偶', 10000]
]
用户可以反复添加商品,在购物车中记录数量
{'极品木瓜':[个数,单价]}
结算购物车
获取用户购物车中所有的商品计算总价并结算即可
针对添加购物车和结算只有登录的用户才可以执行
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/274636.html