四大模块

7.15内容整理和概述

今日内容概要

内容目录

  • 模块之datetime
  • 模块之os
  • 模块之sys
  • 模块之json

模块之datetime

模块功能:与time模块相似,时间操作相关
方法:
	1.datetime.datetime.today():
		功能:显示当前时间,精确到秒
		相关方法:
			1.datetime.datetime.today().year:显示当前年份
			2.datetime.datetime.today().mouth:显示当前月份
			3.datetime.datetime.today().weekday():显示当前周几(计算机算法)
			4.datetime.datetime.today().isoweekday():显示当前周几(人类算法)
			5.datetime.datetime.now():当前时区时间
			6.datetime.datetime.utcnow():零时区时间
			7.datetime.datetime(2017, 5, 23, 12, 20):自己指定时间
	2.datetime.date.today():
		功能:显示当前年月日
	3.datetime.timedelta():
		参数:days,seconds,microsecounds,minutes,hours,weeks
		功能:设置一个时间区域

模块之os

"""主要和操作系统打交道"""
方法:
	1.os.mkdir():在指定路径创建单极目录,不能创建多级目录
	2.os.makedirs():在指定路径创建多级目录
	"""创建文件夹的两种方法都可以用绝对路径和相对路径"""
	3.os.rmdir():在指定路径删除单极空目录
	4.os.removedirs():在指定路径删除所有的空目录
	"""删除文件夹的两种方法都可以用绝对路径和相对路径"""
	5.os.listdir():列举指定路径下所有的文件名称,并以列表输出;空白则默认当前执行文件所在的目录
	6.os.rename(需要改的文件路径,被改后改的文件路径):重命名文件,可以通过前后路径的不同进行改名和转移文件
	7.os.remove(被移除的文件路径):删除文件
	8.os.getcwd():获取当前"工作"路径
	9.os.chdir():进入指定路径
	10.os.path.abspath(__file__):获取当前"文件"的绝对路径
	11. os.path.dirname(__file__): 获取当前"文件所在目录"的绝对路径
	12.os.path.exists():判断输入的路径中是否存在文件或者目录
	13.os.path.isdir():判断输入的路径中是否存在该目录
	14.os.path.isfile():判断输入的路径中是否存在该文件
	15.os.path.join(前部分路径,后部分路径):拼接路径
	"""join方法可以自动识别当前所在的操作系统并自动切换正确的分隔符,不建议用+符号拼接路径"""
	16.os.path.getsize():获取文件大小,以字节数为单位

模块之sys

"""主要和python解释器打交道"""
方法:
	1.sys.path:获取环境变量,以列表形式输出
	2.sys.version:查看解释器信息
	3.sys.platform:查看当前平台
	4.sys.argv:在终端运行,可以获输入,形成一个列表

模块之json

json模块又名序列化模块
json格式的数据属于字符串
功能:能实现不同编程语言之间的数据交互
特征:
	1.数据为字符串
	2.有标志性的双引号
方法:
	1.json.dumps():序列化,将输入的数据类型转换成json格式
	2.json.loads():反序列化, 将json格式字符串转换成对应编程语言中的数据类型
	3.json.dump(数据, 文件):只用于文件操作,将数据转换为json格式并写入指定文件
	4.json.load(文件):将文件中json格式字符串读取出来并转换成对应的数据类型

今日作业

第一题:

​ 编写一个统计指定文件类型的脚本工具
​ 输入指定类型的文件后缀
​ eg:.txt
​ 并给出一个具体路径 之后统计该类型文件在该文件下的个数
ps:简单实现即可 无需优化

import os
import sys
count = 0
input_order = sys.argv
file_fun = input_order[1]
file_path = input_order[2]
order_list = os.listdir(file_path)
print(order_list)
for i in order_list:
    if file_fun in i:
        count += 1
print(f"{file_fun}的类型有{count}个")

第二题:

针对json实操 尝试单文件多用户(一行一个)是否可实现 哪个更方便

import json
relative_path = "story/user.txt"
absolute_path = os.path.dirname(__file__)
order_path = os.path.join(absolute_path,relative_path)
while True:
    order = input("请输入注册和登录:")
    if order == "2":
        username = input("请输入用户名:")
        password = input("请输入密码:")
        dict = {}
        dict[username] = password
        with open(order_path,"a",encoding="utf8") as user:
            json.dump(dict, user)
            user.write('\n')
    if order == "1":
        with open(order_path,"r",encoding="utf8") as user:
            for i in user:
                print(json.loads(i.strip("\n")))

第三题:

有一个目录文件下面有一堆文本文件
eg:
db目录
J老师视频合集
R老师视频合集
C老师视频合集
B老师视频合集
文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
用户选择哪个文件就自动打开该文件并展示内容
涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径

import os
relative_path = "study/db"
absolute_path = os.path.dirname(__file__)
order_path = os.path.join(absolute_path,relative_path)
dict_file = {}
count = 1
os.makedirs(order_path)
os.chdir(order_path)
with open("J老师学习资料.txt","a",encoding="utf8") as f:
    f.write("J老师学习资料")
with open("R老师学习资料.txt","a",encoding="utf8") as f:
    f.write("R老师学习资料")
with open("C老师学习资料.txt","a",encoding="utf8") as f:
    f.write("c老师学习资料")
with open("B老师学习资料.txt","a",encoding="utf8") as f:
    f.write("B老师学习资料")
file_list = os.listdir()
print("请选择你需要学习的资料:")
print("退出程序请输入 “0")
for i in file_list:
    dict_file[count] = i
    print(f"{count}.{dict_file[count]}")
    count += 1
while True:
    order_number = input("请输入学习资料编号:")
    if order_number == "0":
        print("欢迎下次再来")
        break
    elif order_number in ["1","2","3","4"]:
        file_path = dict_file[int(order_number)]
        with open(file_path,"r",encoding="utf8") as f:
            print(f.read())
    else:
        print("请输入正确的编号")
        continue
os.remove(r'J老师学习资料.txt')
os.remove(r'R老师学习资料.txt')
os.remove(r'C老师学习资料.txt')
os.remove(r'B老师学习资料.txt')
os.chdir(absolute_path)
os.removedirs(order_path)

第四题:

  1.用户注册
	2.用户登录
	3.添加购物车
	4.结算购物车

	用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件
	数据格式 {"name":"jason","pwd":123} 

​ ps:文件名可以直接用用户名便于校验

​ 用户注册时给每个用户添加两个默认的键值对(账户余额 购物车)
​ {"balance":15000,"shop_car":{}}
​ 添加购物车功能 商品列表可以自定义或者采用下列格式
​ good_list = [
​ ['挂壁面',3]
​ ['印度飞饼', 22]
​ ['极品木瓜', 666],
​ ['土耳其土豆', 999],
​ ['伊拉克拌面', 1000],
​ ['董卓戏张飞公仔', 2000],
​ ['仿真玩偶', 10000]
​ ]
​ 用户可以反复添加商品,在购物车中记录数量
​ {'极品木瓜':[个数,单价]}
​ 结算购物车
​ 获取用户购物车中所有的商品计算总价并结算即可
​ 针对添加购物车和结算只有登录的用户才可以执行

# 注册
def register():
    register_username = input("请输入用户名:")
    register_password = input("请输入密码:")
    register_client_list = os.listdir(client_storage_path)
    if not os.path.isfile(os.path.join(client_storage_path, register_username)):
    # if not (register_username in register_client_list):
        client_dict = {
            "username": register_username,
            "password": register_password,
            "balance": 15000,
            "shop_car": {}
        }
        with open(os.path.join(client_storage_path, register_username), "w", encoding="utf8") as f:
            json.dump(client_dict, f)
        print("注册成功")
    else:
        print("用户名已存在")

# 登录
def login():
    login_username = input("请输入用户名:")
    login_password = input("请输入密码:")
    login_client_list = os.listdir(client_storage_path)
    # if os.path.isfile(os.path.join(client_storage_path, login_username)):
    if login_username in login_client_list:
        with open(os.path.join(client_storage_path, login_username), "r", encoding="utf8") as f:
            login_client = json.load(f)
            username = login_client.get("username")
            password = login_client.get("password")
            if login_username == username and login_password == password:
                global online_client
                online_client = login_client
                print("登录成功")
            else:
                print("请输入正确的用户名或密码")
    else:
        print("请输入正确的用户名或密码")

# 添加商品
def add_goods():
    if online_client:
        print("""
        这是今日商品:
        1.挂壁面           ————3元
        2.印度飞饼         ————22元
        3.极品木瓜         ———666元
        4.土耳其土豆        ———999元
        5.伊拉克拌面       ———1000元
        6.董卓戏张飞公仔    ———2000元
        7.仿真玩偶        ———10000元
        """)
        goods_inder = input("请选择你需要的商品编号:")
        if goods_inder in ([str(i) for i in range(1,8)]):
            goods_name = good_list[int(goods_inder)-1][0]
            goods_price = good_list[int(goods_inder)-1][1]
            client_goods_item = online_client.get("shop_car")
            if not (goods_name in client_goods_item):
                client_goods_item[goods_name] = [1,goods_price]
                with open(os.path.join(client_storage_path, online_client.get("username")), "w", encoding="utf8") as f:
                    json.dump(online_client,f)
                print("商品添加成功")
                print(online_client)
            else:
                client_goods_item[goods_name][0] += 1
                with open(os.path.join(client_storage_path, online_client.get("username")), "w", encoding="utf8") as f:
                    json.dump(online_client,f)
                print("商品添加成功")
                print(online_client)
        else:
            print("请输入正确的商品编码")
    else:
        print("请先登录")
# 结算商品
def settle_goods():
    if online_client:
        global count
        count = 0
        client_goods_item = online_client.get("shop_car")
        for i in client_goods_item.values():
            count += i[0]*i[1]
        if count <= online_client["balance"]:
            print(f"总共花费{count}元")
            online_client["balance"] -= count
            online_client["shop_car"] = {}
            with open(os.path.join(client_storage_path, online_client.get("username")), "w", encoding="utf8") as f:
                json.dump(online_client, f)
        else:
            print("余额不足")
    else:
        print("请先登录")

# 用户退出
def quit_client():
    global online_client
    online_client = {}
    print("用户已退出")

# 主函数
import os
import json
good_list = [
    ['挂壁面', 3],
    ['印度飞饼', 22],
    ['极品木瓜', 666],
    ['土耳其土豆', 999],
    ['伊拉克拌面', 1000],
    ['董卓戏张飞公仔', 2000],
    ['仿真玩偶', 10000]
]
online_client = {}
absolute_path = os.path.dirname(__file__)
client_storage_path = os.path.join(absolute_path, "db")
try:
    os.makedirs(client_storage_path)
except Exception as e:
    pass
print("""
欢迎来到本系统:
    1.用户注册
    2.用户登录
    3.添加购物车
    4.结算购物车
    5.退出登录
    0.退出系统
""")
while True:
    func_order = input("请输入功能序号:")
    if func_order == "1":
        register()
    elif func_order == "2":
        login()
    elif func_order == "3":
        add_goods()
    elif func_order == "4":
        settle_goods()
    elif func_order == "5":
        quit_client()
    elif func_order == "0":
        break
    else:
        print("请输入正确的功能序号")
posted @ 2022-07-17 23:56  维生素Z  阅读(18)  评论(0)    收藏  举报