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中执行

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()

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()

浙公网安备 33010602011771号