常用内置模块os sys json

今日内容回顾

  • os模块
  • sys模块
  • json模块

os模块

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

1、创建目录(文件夹)

import os
os.mkdir(r'b')  # 相对路径 在执行文件所在的路径创建目录
os.mkdir(r'b\bb\bbb')  # 无法创建多级目录
os.makedirs(r'b\bb\bbb')  # 可以创建多级目录
os.makedirs(r'b1')  # 也可以创建单级目录

2、删除目录(文件夹)

os.rmdir(r'b1')  # 可以删除单级目录(只能删空的单级目录)
os.rmdir(r'a\aa\aaa')  # 无法一次性删除多级目录 这里删的只是aaa
os.removedirs(r'a\aa')  # 可以一次性删除多级目录(但只能删空的多级目录) 也能删单级

image

image

3、列举指定路径下内容名称

# 可以指定查找路径下的内容名称
print(os.listdir())  # 显示的是依据当前执行文件所在位置下的内容名称
print(os.listdir(r'D:\\'))  # 显示的是D盘根目录下的内容名称

4、删除\重命名文件

os.rename(r'a.txt', r'p.txt')  # 重命名文件
os.remove(r'p.txt')  # 删除文件

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

print(os.getcwd())  # 获取当前所在的工作目录 D:\py20\day19
os.chdir('..')  # 切换到上一级目录
print(os.getcwd())  # D:\py20

6、动态获取项目根路径(重要)

print(os.path.abspath(__file__))  # 获取执行文件的绝对路径 D:\py20\day19\a.py

print(os.path.dirname(__file__))  # 获取执行文件所在的目录路径 D:/py20/day19

7、判断路径是否存在(文件、目录)

print(os.path.exists(r'yoyo.py'))  # 判断文件路径是否存在 True 同样依据执行文件所在位置判断在与不在
print(os,path.exists(r'D:\py20\day19'))  # 判断任意目录是否存在 True

print(os.path.isfile(r'D:\py20\day19\a.py'))  # 判断路径下是否是是文件  True
print(os.path.isfile(r'a.py'))  # True  
print(os.path.isfile(r'yoyo.py'))  # False
print(os.path.isfile(r'D:\py20\day19'))  # False

print(os.path.isdir(r'a.py'))  # False  判断目录下是否存在文件
print(os.path.isdir(r'D:\py20\day19'))  # True
print(os.path.isdir(r'D:\py20\day19\bin'))  # True

image

8、路径拼接(重要)

a1 = r'D:\py20\day19'
a2 = r'a.py'
错误做法:print(f'{a1}\{a2}')
涉及到路径拼接一定不要自己拼接 因为不同的操作系统路径分隔符不一样
print(os.path.join(a1, a2))  # D:\py20\day19\a.py 使用模块拼接的话会自动转不同的操作系统路径的分隔符

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

print(os.path.getsize(r'a.py'))  # 785字节 是以字节为单位

sys模块

sys模块主要与python解释器打交道

import sys

print(sys.path)  # 获取执行文件的sys.path
print(sys.getrecursionlimit())  # 获取python解释器默认最大递归深度
sys.setrecursionlimit(3000)  # 修改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(了解即可)

# 下列是用在cmd命令窗口中
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无权执行该文件')

image

json模块

​ 何为jason模块

# jason模块也称序列化模块 序列化可以打破语言的限制实现不同编程语言之间数据交互
jason格式数据的作用

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

d = {'name': 'jason', 'age': 18, 'hobby': 'read'}
print(d, type(d))  # {'name': 'jason', 'age': 18, 'hobby': 'read'} <class 'dict'>

import json
res = json.dumps(d)
print(res, type(res))  # {"name": "jason", "age": 18, "hobby": "read"} <class 'str'>

json相关操作
	# 针对数据
    json.dumps()  序列化:将某一数据类型转化成json格式字符串
    json.loads()  反序列化:json格式字符串转化成某一个编程语言对应的数据类型
    
    # 针对文件
    json.dump()  将某一数据类型转化成json格式字符串写入文件 必须要有一个文件对象
    json.load()  读取文件中json格式数据并反序列化成数据类型

json.dumps()  序列化
json.loads()  反序列化
user_dic = {'name': 'jason', 'hobby': 'read'}
'将字典写入文件并且取出来之后还是字典'
with open(r'b.txt', 'w', encoding='utf8') as f:
    # json_str = json.dumps(user_dic)  # 序列化:数据类型转化成json格式字符串
    # f.write(json_info)
    json.dump(user_dic, f)  # 将数据序列化并写入文件:就是将字典转化成json字符串写入到文件里面去
with open(r'b.txt', 'r', encoding='utf8') as f1:
    # json_data = f1.read()
    # json_dict = json.loads(json_data)  # 反序列化:json格式字符串转化成某一个编程语言对应的数据类型
    # print(json_dict, type(json_dict))
    res = json.load(f1)  # 自动读取文件中json格式数据并反序列化成数据类型
    print(res, type(res))
    

json模块实战

 用户登录注册功能
import os
import json

# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__)  # D:/pythonProject03/day19
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db')  # D:/pythonProject03/day19/db
# 3.创建db目录
if not os.path.isdir(db_dir):
    os.mkdir(db_dir)
# 4.获取用户数据
# username = input('username>>>:').strip()
# password = input('password>>>:').strip()
# 4.1.判断用户名是否已存在
# print(os.listdir(db_dir))  # ['jason.json', 'kevin.json', 'tony.json']  方式1
# user_file_path = os.path.join(db_dir, f'{username}.json')  方式2
# 5.构造用户字典
# user_dict = {
#     'username': username,
#     'password': password,
#     'account': 15000,  # 账户余额
#     'shop_car': []  # 购物车
# }
# 6.拼接存储用户数据的文件路径
# user_file_path = os.path.join(db_dir, f'{username}.json')  # D:/pythonProject03/day19/db/jason.json
# 7.写入文件数据
# with open(user_file_path,'w',encoding='utf8') as f:
#     json.dump(user_dict, f)
username = input('username>>>:').strip()
# 1.拼接上述用户名组成的文件路径
target_user_file_path = os.path.join(db_dir, f'{username}.json')
if not os.path.isfile(target_user_file_path):
    print('用户名错误')
else:
    password = input('password>>>:').strip()
    # 2.获取用户真实数据字典
    with open(target_user_file_path,'r',encoding='utf8') as f:
        real_user_dict = json.load(f)
    if password == real_user_dict.get('password'):
        print('登录成功')
    else:
        print('密码错误')
posted @   小福福  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
  1. 1 原来你也在这儿 温余福
  2. 2 世间美好和你环环扣扣 温余福
  3. 3 随风起舞 温余福
  4. 4 罪恶都市 温余福
世间美好和你环环扣扣 - 温余福
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 尹初七

作曲 : 温余福

编曲 : 彭圣杰

偏偏秉烛夜游

偏偏秉烛夜游

午夜星辰 似奔走之友

爱你每个结痂伤口

酿成的陈年烈酒

入喉尚算可口

入喉尚算可口

怎么泪水 还偶尔失守

邀你细看心中缺口

裂缝中留存 温柔

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

让樱花偷偷 吻你额头

让世间美好 与你环环相扣

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

此时已莺飞草长 爱的人正在路上

此时已莺飞草长 爱的人正在路上

我知他风雨兼程 途经日暮不赏

穿越人海 只为与你相拥

此刻已皓月当空 爱的人手捧星光

我知他乘风破浪 去了黑暗一趟

感同身受 给你救赎热望

知道你不能 还要你感受

知道你不能 还要你感受

让星光加了一点彩虹

当樱花开的纷纷扬扬

当世间美好 与你环环相扣

特别鸣谢:槿葵,我们的海报制作妹妹。

原唱:柏松

吉他:柏松

和声:柏松

录音:柏松

混音:张强

点击右上角即可分享
微信分享提示