os\sys json模块

今日内容概要

  • os与sys模块

    os模块主要与操作系统打交道
    sys模块主要与python解释器打交道
    
  • json模块

今日内容详细

os模块(重要)

os模块主要与代码运行所在的操作系统打交道
import os
1.创建目录(文件夹)
os.mkdir(r'd1')  # 可以创建单级目录
os.mkdir(r'd\dd\ddd')  # 不可以创建多级目录
os.makedirs(r'dd\ddd\dddd')  # 可以创建多级目录
os.makedirs(r'a')  # 也可以创建单级目录
2.删除目录(文件夹)
os.rmdir(r'd1')  # 可以删除单级目录
os.rmdir(r'dd\ddd\dddd')  # 不可以一次性删除多级目录
os.removedirs(r'dd\ddd\dddd')  # 可以删除多级目录
os.removedirs(r'dd\ddd\dddd\aaa')  # 只能删除空的多级目录
os.rmdir(r'aa')  # 只能删除空的单级目录
3.列举指定路径下内容名称
print(os.listdir())  # 返回一个列表 里面是当前目录下的文件名
print(os.listdir(r'G:\\'))  #返回一个列表 列表是硬盘根目录下的文件名 
4.删除/重命名文件
os.rename(r'aaa\bbb\ccc', r'aaa\bbb\ddd')  # 第二个到到第几级改第几级
os.remove(r'aaa\bbb\ccc')  # 删最后一级 只能删空文件夹
5.获取/切换当前工作目录
print(os.getcwd())  # G:\pythonProjeck\pythonProjec10
os.chdir('..')  # 返回上级目录 两个点代表上级目录
print(os.getcwd())  # G:\pythonProjeck
os.mkdir(r'hhh')  # 在G:\pythonProjeck目录创建新的文件
6.动态获取项目根路径(非常重要)
print(os.path.abspath(__file__))  # 获取执行文件的绝对路径G:\pythonProjeck\pythonProjec10\01.py
print(os.path.dirname(__file__))  # 获取执行文件所在的目录路径G:/pythonProjeck/pythonProjec10
7.判断路径是否存在(文件、目录)
print(os.path.exists(r'01.py'))  # 判断文件路径是否存在 True
print(os.path.exists(r'G:/pythonProjeck/pythonProjec10'))  # 判断目录是否存在  True
print(os.path.isfile(r'01.py'))  # 判断路径是否是文件  True
print(os.path.isfile(r'G:/pythonProjeck'))  # 判断路径是否是文件  False
print(os.path.isdir(r'01.py'))  # 判断路径是否是目录  False
print(os.path.isdir(r'G:/pythonProjeck'))  # 判断路径是否是目录 True
8.路径拼接(非常重要)
s1 = r'G:/pythonProjeck/pythonProjec10'
s2 = r'01.py'
print(os.path.join(s1, s2))  # G:/pythonProjeck/pythonProjec10\01.py  # 可以识别
9.获取文件大小(字节)
print(os.path.getsize(r'a.txt))

sys模块

import sys  
print(sys.path)  # 获取执行文件的sys.path
print(sys.getrecursionlimit())  # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000)  # 修改python解释器默认最大递归深度
print(sys.version)  #3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
print(sys.platform)  # 平台信息 win32(了解即可)
res = sys.argv  
print(res)  # 在pycharm中执行打印的是一个包含执行文件路径的列表
if len(res) != 3:
    print('执行命令缺少了用户名或密码')
else:
    username = res[1]
    password = res[2]
    if username == 'jason' and password == '123':
        print('jason您好 文件正常执行')
    else:
        print('您不是jason无权执行该文件')
# 需要在cmd中执行

image

json模块

json模块也成为序列化模块 序列化可以打破语言限制实现不同编程语言之间数据交互

json格式数据的作用
	可以在不同编程语言中交互
json格式数据的形式
	字符串类型并且引号都是双引号
json相关操作
	针对数据
    json.dumps()  
    json.loads()
    d1_dict = {'username': 'guts', 'password': 123}
    res = json.dumps(d1_dict)
    print(res)  # {"username": "guts", "password": 123}
    print(type(res))  # <class 'str'>
    ret = json.loads(res)  
    print(ret)  # {'username': 'guts', 'password': 123}
    print(type(ret))  # <class 'dict'>
    
    针对文件
    json.dump()
    json.load()

image

json模块实战

import json
import os

base_dir = os.path.dirname(__file__)
db_dir = os.path.join(base_dir, 'db')

def register():
    while True:
        # 判断是否有db文件夹 没有就创建一个
        if not os.path.exists(db_dir):
            os.mkdir(db_dir)
        # 获取用户信息
        username = input('请输入用户名:')
        user_path = os.path.join(db_dir, f'{username}.json')
        # 判断用户是否注册过了
        if os.path.isfile(user_path):
            print('该用户名已注册,请再次尝试')
            continue
        # 如果没注册 输入密码进行创建
        password = input('请输入密码:')
        user_dict = {
            'username': username,
            'password': password,
            'account': 15000,  # 账户余额
            'shop_car': []  # 购物车
        }
        # 将用户字典存到json文件中
        with open(user_path, 'w', encoding='utf8') as f:
            json.dump(user_dict, f)
        print('注册成功')
        break


def login():
    while True:
        # 要求用户输入用户密码
        username = input('请输入用户名:').strip()
        password = input('请输入密码:').strip()
        user_path = os.path.join(db_dir, f'{username}.json')
        # 判断用户是否存在和密码是否正确
        if not os.path.isfile(user_path):
            print('用户不存在')
            continue
        # 读取用户文件
        with open(user_path, 'r', encoding='utf8') as f:
            user_dict = json.load(f)
        if user_dict.get('password') == password:
            print('登录成功')
            break
        else:
            print('密码错误')


register()
login()
posted @ 2022-10-20 21:07  理塘丁真1!5!  阅读(23)  评论(0编辑  收藏  举报