常用内置模块之os,sys,json

os模块(重要)

os模块主要与代码运行所在的操作系统打交道

1.创建目录(也称为文件夹)

import os
os.mkdir(r'd1')  # 相对路径,在执行文件躲在路径下创建目录
# "mkdir创建的是单级目录"
os.mkdir(r'd2.aaa.bbb.bbb')  # 尝试多级目录报错
os.makedirs(r'd3\aaa\ccc\vvv')  # 创建多级目录
"创建多级目录需要用makedirs,也可以创建单级目录"
os.makedirs(r'd4')  # 创建成功

2.删除目录(删除文件夹)

os.rmdir(r'd1')  # 删除成功
"""rmdir可以删除单级目录,不可以删除多级目录,注意删除的只能是空的目录"""
os.rmdir(r'd3\aaa\ccc\vvv')  # 直接报错
os.removedirs(r'd3\aaa\ccc\vvv')  # 删除成功
"""removedirs可以删除多级目录,注意:删除的只能是空的目录"""

3.列举执行路径下内容名称

print(os.listdir())  # ['.idea', 'd1', 'd2', 'd3', 'd5', '与操作系统打交道.py']
"""以执行文件所以在路径查询路径下所有的内容名称"""
print(os.listdir(r'C:\360Downloads'))  # 查看计算机路径下的

4.删除/重命名文件

print(os.rename(r'a.txt', 'aaa.txt'))  # 修改文件名
"""文件名a.txt被修改为aaa.txt"""
os.remove(r'aaa.txt')  # 删除aaa.txt文本

5.获取/切换当前工作目录

print(os.getcwd())   # 获取当前文件的工作目录
"""C:\Python38\python.exe C:/pythonProject/模块学习/d5/aa.bb.cc/与操作系统打交道.py"""
os.chdir('../../..')  # 切换到上一层文件的工作目录

6.动态获取项目根路径(特别重要)

print(os.path.abspath(__file__))  # 获取执行文件的绝对路径
"""C:\pythonProject\模块学习\d5\aa.bb.cc\与操作系统打交道.py"""
print(os.path.dirname(__file__))  # 获取执行文件所在目录路径
"""C:/pythonProject/模块学习/d5/aa.bb.cc"""

7.判断路径是否存在

print(os.path.exists(r'C:\pythonProject\模块学习\d5\aa.bb.cc\与操作系统打交道.py'))
"""判断文件路径是否存在结果为True"""
print(os.path.exists(r'C:\pythonProject\模块学习\d1'))
"""判断目录(也就是文件夹)是否存在结果为True"""
print(os.path.isfile(r'C:\pythonProject\模块学习\d5\aa.bb.cc\与操作系统打交道.py'))
"""判断路径是否是文件,关键字sifile,结果为True"""
print(os.path.isfile(r'C:\pythonProject\模块学习\d5\aa.bb.cc'))
"""判断路径是否是文件,这次我们使用目录,结果是False"""
print(os.path.isdir(r'C:\pythonProject\模块学习\d5\aa.bb.cc\与操作系统打交道.py'))
"""判断路径是否是目录,我们用文件判断结果是Fales"""
print(os.path.isdir(r'C:\pythonProject\模块学习\d3'))
"""判断路径是否是目录,我们使用目录判断结果是True"""

8.路径拼接

s1 = r'C:\pythonProject\模块学习\d1'
s2 = r'与操作系统打交道.py'
print(os.path.join(s1, s2))
"""C:\pythonProject\模块学习\d1\与操作系统打交道.py"""

9.获取文件大小(字节)

print(os.path.getsize(r'a.txt'))

sys模块

import sys

print(sys.path)  # 获得执行文件的环境变量,可以添加
"""
['C:\\pythonProject\\模块学习', 'C:\\pythonProject\\模块学习', 
'C:\\PyCharm 2021.2.4\\plugins\\python\\helpers\\pycharm_display', 
'C:\\Python38\\python38.zip', 'C:\\Python38\\DLLs', 
'C:\\Python38\\lib', 'C:\\Python38', 'C:\\Python38\\lib\\site-packages',
'C:\\PyCharm 2021.2.4\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
"""
print(sys.getrecursionlimit())  # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000)  # 修改python解释器默认最大递归深度
print(sys.version)  # 获得python解释器的版本
"""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
if len(res) != 3:
    print('执行命令缺少了用户名或密码')
else:
    username = res[1]
    password = res[2]
    if username == 'jason' and 'password'== '123':
        print('jason管理员你好,文件正常执行')
    else:
        print('只有jason管理员才有权利执行该文件')

json模块

json模块也称为序列号模块,序列化可以打破语言显示实现不同编程语言之前的数据交互

json格式数据的作用 
		可以起到一个中间翻译的效果,让不同编程语言交互

json格式数据的形式
		字符串类型并且引号都是双引号

      

针对数据

	 json.dumps()  '将数据转为json格式'
    json.loads()  '将json格式转为列表
代码展示:
    name_dict = {'name': 'tony', 'pwd': '123'}
    import json

    res = json.dumps(name_dict)
    print(res)  # {"name": "tony", "pwd": "123"}

    ret = json.loads(res)
    print(ret)  # {'name': 'tony', 'pwd': '123'}'  

针对文件

    json.dump()  '将字典转json格式写入’
    json.load()  '将json格式转字典赋值'
代码展示:
    import json

    name_dict = {'name': 'tony', 'pwd': '123'}
    with open(r'a.txt','w',encoding='utf8')as f:
        json.dump(name_dict,f)  # 直接将字典转json格式写入文件

    # user_dict = {}
    with open(r'a.txt','r',encoding='utf8')as f1:
        user_dict = json.load(f1)  # 直接将json格式转字典
    print(user_dict)

json模块实战

用户注册功能

import os
import json

# 注册功能
# 1.先获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__)  # C:/pythonProject/模块学习/d3
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db')  # C:/pythonProject/模块学习/d3\db
# 3.创建db目录
if not os.path.isdir(db_dir):  # isdir判断文件是否是目录,就是判断文件db是否存在
    os.mkdir(db_dir)  # 如果不是就创建这个目录,mkdir创建单级目录
# 4.获取用户数据
username = input('请输入您的账户>>>>:').strip()
password = input('请输入您的用户密码>>>:').strip()
# 4.1判断用户名是否已经存在,就是判断文件是否存储
user_file_path = os.path.join(db_dir, f'{username}.json')
if not os.path.exists(user_file_path):
    """f后面是名字.json的文件名,将这个文件名加入db_dir文件路径下"""
    # 5.构造用户字典
    user_dict = {
        'username': username,
        'password': password,
        'account': 150000,  # 账户余额
        'shop_car': []  # 购物车
    }
    # 6.写入文件数据
    with open(user_file_path, 'w', encoding='utf8') as f:
        json.dump(user_dict, f)  # 此处用dump直接在文件里面写入json格式数据
else:
    print('账号已存在')

用户登录功能

import os
import json

# 注册功能
# # 1.先获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__)  # C:/pythonProject/模块学习/d3
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db')  # C:/pythonProject/模块学习/d3\db、
user_name = input('请输入用户名>>>>:').strip()
# 3.拼接上述用户名组成文件路径
target_user_file_path = os.path.join(db_dir, f'{user_name}.json')
"""还是将用户名生成的文件路径跟db目录路径进行拼接"""
if not os.path.isfile(target_user_file_path):
    """判断这个路径是不是文件,如果不是证明这个文件名不存在"""
    print('不好意思,用户名不存在')
else:  # 表示这个路径是文件,证明这个文件是存在的
    password = input('请输入用户密码>>>>:').strip()
    # 4.获取用户真实数据字典
    with open(target_user_file_path, 'r', encoding='utf8') as f:
        real_user_dict = json.load(f)
    if password == real_user_dict['password']:
        print('登录成功')
    else:
        print('密码错误')
posted @ 2022-10-20 20:50  雪语  阅读(67)  评论(0编辑  收藏  举报