python学习Day24


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

(0)
上一篇 2022年7月15日
下一篇 2022年7月15日

相关推荐

发表回复

登录后才能评论